Skip to content
Related Articles
Get the best out of our app
GFG App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Check if given String is prefix subarray of the given Array

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

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++




// 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




// 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.


Python




# 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#




// 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.


Javascript




<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

 


My Personal Notes arrow_drop_up
Last Updated : 12 May, 2022
Like Article
Save Article
Similar Reads
Related Tutorials