Given a string str and an array of words word[], the task is to find whether str is a prefix string of word[].
Examples:
Input: str = "indiaismycountry",
word[] = {"india", "is", "my", "country", "and", "i", "love", "india"}
Output: true
Explanation: String str can be made by concatenating "india", "is", "my" and "country" together.Input: str = "indianism",
word[] = {"india", "is", "my", "country", "and", "i", "love", "india"}
Output: false
Explanation: It is impossible to make str using the prefixes of the word array.
Approach: This is a simple implementation related problem. Follow the steps mentioned below:
- Take an empty string named ans.
- Iterate over the word array and keep on adding each element of the word array to ans.
- After adding to ans comparing it with the s, if they both match simply return true else continue.
- If the iteration ends and ans doesn't matches with the s then return false.
Below is the C++ program to implement the above approach-
// C++ program to implement the
// given approach
#include <bits/stdc++.h>
using namespace std;
// Function to check whether string
// is prefix
bool isPrefixString(string s,
vector<string>& word)
{
// ans is taken as an empty string
string ans = "";
// N is used to store
// the size of word array
int N = word.size();
// Iterating over the word array
for (int i = 0; i < N; i++) {
// Adding element by element
// of the array
ans += word[i];
// If ans and str are same
// return true
if (ans == s)
return true;
}
// As iteration is ending which means
// string is not prefix so return false.
return false;
}
// Driver code
int main()
{
string str = "indiaismycountry";
vector<string> word
= { "india", "is", "my",
"country", "and", "i",
"love", "india" };
bool ans = isPrefixString(str, word);
if (ans)
cout << "True";
else
cout << "False";
return 0;
}
// Java program for the above approach
import java.io.*;
import java.lang.*;
import java.util.*;
class GFG {
// Function to check whether string
// is prefix
static Boolean isPrefixString(String s,
String word[])
{
// ans is taken as an empty string
String ans = "";
// N is used to store
// the size of word array
int N = word.length;
// Iterating over the word array
for (int i = 0; i < N; i++) {
// Adding element by element
// of the array
ans += word[i];
// If ans and str are same
// return true
if (ans.equals(s))
return true;
}
// As iteration is ending which means
// string is not prefix so return false.
return false;
}
// Driver code
public static void main (String[] args)
{
String str = "indiaismycountry";
String word[]
= { "india", "is", "my",
"country", "and", "i",
"love", "india" };
Boolean ans = isPrefixString(str, word);
if (ans)
System.out.println("True");
else
System.out.println("False");
}
}
// This code is contributed by hrithikgarg03188.
# Pyhton program to implement the
# given approach
# Function to check whether string
# is prefix
def isPrefixString(s, word):
# ans is taken as an empty string
ans = ""
# N is used to store
# the size of word array
N = len(word)
# Iterating over the word array
for i in range(0, N):
# Adding element by element
# of the array
ans = ans + (word[i])
# If ans and str are same
# return true
if (ans == s):
return True
# As iteration is ending which means
# string is not prefix so return false.
return False
# Driver code
str = "indiaismycountry"
word = ["india", "is", "my", "country", "and", "i", "love", "india"]
ans = isPrefixString(str, word)
if (ans == True):
print("True")
else:
print("False")
# This code is contributed by Samim Hossain Mondal.
// C# program for the above approach
using System;
class GFG {
// Function to check whether string
// is prefix
static bool isPrefixString(string s,
string []word)
{
// ans is taken as an empty string
string ans = "";
// N is used to store
// the size of word array
int N = word.Length;
// Iterating over the word array
for (int i = 0; i < N; i++)
{
// Adding element by element
// of the array
ans += word[i];
// If ans and str are same
// return true
if (ans.Equals(s))
return true;
}
// As iteration is ending which means
// string is not prefix so return false.
return false;
}
// Driver code
public static void Main ()
{
string str = "indiaismycountry";
string []word
= { "india", "is", "my",
"country", "and", "i",
"love", "india" };
bool ans = isPrefixString(str, word);
if (ans)
Console.WriteLine("True");
else
Console.WriteLine("False");
}
}
// This code is contributed by Samim Hossain Mondal.
<script>
// JavaScript code for the above approach
// Function to check whether string
// is prefix
function isPrefixString(s, word)
{
// ans is taken as an empty string
let ans = "";
// N is used to store
// the size of word array
let N = word.length;
// Iterating over the word array
for (let i = 0; i < N; i++)
{
// Adding element by element
// of the array
ans += word[i];
// If ans and str are same
// return true
if (ans == s)
return true;
}
// As iteration is ending which means
// string is not prefix so return false.
return false;
}
// Driver code
let str = "indiaismycountry";
let word
= ["india", "is", "my",
"country", "and", "i",
"love", "india"];
let ans = isPrefixString(str, word);
if (ans)
document.write("True");
else
document.write("False");
// This code is contributed by Potta Lokesh
</script>
Output
True
Time Complexity: O(N), N is the size of the word array.
Space Complexity: O(M) where M is the length of str