# Check if a string is concatenation of another given string

Given two strings str1 and str2 of length N and M respectively, the task is to check if the string str1 can be formed by concatenating the string str2 repetitively or not.

Examples:

Input: str1 = “abcabcabc”, str2 = “abc”
Output: Yes
Explanation:
Concatenating the string str2 thrice generates the string (“abc” + “abc” + “abc” = ) “abcabcabc”.
Therefore, the required output is Yes.

Input: str1 = “abcabcab”, str2 = “abc”
Output: No

Approach: Follow the steps below to solve the problem:

• Traverse the strings str1 and str2.
• For each character of str1 and str2, check if str1[i] == str2[i % M] or not.
• If found to be false for any character, print “No”.
• Otherwise, print “Yes”.

Below is the implementation of the above approach:

## C++

 `// C++ program to implement` `// the above approach`   `#include ` `using` `namespace` `std;`   `// Function to check if a string is` `// concatenation of another string` `bool` `checkConcat(string str1,` `                 ``string str2)` `{`   `    ``// Stores the length of str2` `    ``int` `N = str1.length();`   `    ``// Stores the length of str1` `    ``int` `M = str2.length();`   `    ``// If M is not multiple of N` `    ``if` `(N % M != 0) {` `        ``return` `false``;` `    ``}`   `    ``// Traverse both the strings` `    ``for` `(``int` `i = 0; i < N; i++) {`   `        ``// If str1 is not concatenation` `        ``// of str2` `        ``if` `(str1[i] != str2[i % M]) {` `            ``return` `false``;` `        ``}` `    ``}` `    ``return` `true``;` `}`   `// Driver Code` `int` `main()` `{` `    ``string str1 = ``"abcabcabc"``;` `    ``string str2 = ``"abc"``;`   `    ``if` `(checkConcat(str1, str2)) {` `        ``cout << ``"Yes"``;` `    ``}` `    ``else` `{` `        ``cout << ``"No"``;` `    ``}` `}`

## Java

 `// Java program to implement` `// the above approach` `import` `java.util.*;`   `class` `GFG{`   `// Function to check if a String is` `// concatenation of another String` `static` `boolean` `checkConcat(String str1,` `                           ``String str2)` `{` `    `  `    ``// Stores the length of str2` `    ``int` `N = str1.length();`   `    ``// Stores the length of str1` `    ``int` `M = str2.length();`   `    ``// If M is not multiple of N` `    ``if` `(N % M != ``0``)` `    ``{` `        ``return` `false``;` `    ``}`   `    ``// Traverse both the Strings` `    ``for``(``int` `i = ``0``; i < N; i++)` `    ``{` `        `  `        ``// If str1 is not concatenation` `        ``// of str2` `        ``if` `(str1.charAt(i) != ` `            ``str2.charAt(i % M)) ` `        ``{` `            ``return` `false``;` `        ``}` `    ``}` `    ``return` `true``;` `}`   `// Driver Code` `public` `static` `void` `main(String[] args)` `{` `    ``String str1 = ``"abcabcabc"``;` `    ``String str2 = ``"abc"``;`   `    ``if` `(checkConcat(str1, str2)) ` `    ``{` `        ``System.out.print(``"Yes"``);` `    ``}` `    ``else` `    ``{` `        ``System.out.print(``"No"``);` `    ``}` `}` `}`   `// This code is contributed by Amit Katiyar`

## Python3

 `# Python3 program to implement` `# the above approach`   `# Function to check if a is` `# concatenation of another string` `def` `checkConcat(str1, str2):`   `    ``# Stores the length of str2` `    ``N ``=` `len``(str1)`   `    ``# Stores the length of str1` `    ``M ``=` `len``(str2)`   `    ``# If M is not multiple of N` `    ``if` `(N ``%` `M !``=` `0``):` `        ``return` `False`   `    ``# Traverse both the strings` `    ``for` `i ``in` `range``(N):`   `        ``# If str1 is not concatenation` `        ``# of str2` `        ``if` `(str1[i] !``=` `str2[i ``%` `M]):` `            ``return` `False` `            `  `    ``return` `True`   `# Driver Code` `if` `__name__ ``=``=` `'__main__'``:` `    `  `    ``str1 ``=` `"abcabcabc"` `    ``str2 ``=` `"abc"`   `    ``if` `(checkConcat(str1, str2)):` `        ``print``(``"Yes"``)` `    ``else``:` `        ``print``(``"No"``)`   `# This code is contributed by mohit kumar 29`

## C#

 `// C# program to implement` `// the above approach` `using` `System;` `class` `GFG{`   `// Function to check if a String is` `// concatenation of another String` `static` `bool` `checkConcat(String str1,` `                        ``String str2)` `{` `  ``// Stores the length ` `  ``// of str2` `  ``int` `N = str1.Length;`   `  ``// Stores the length ` `  ``// of str1` `  ``int` `M = str2.Length;`   `  ``// If M is not multiple ` `  ``// of N` `  ``if` `(N % M != 0)` `  ``{` `    ``return` `false``;` `  ``}`   `  ``// Traverse both the Strings` `  ``for``(``int` `i = 0; i < N; i++)` `  ``{` `    ``// If str1 is not ` `    ``// concatenation of str2` `    ``if` `(str1[i] != ` `        ``str2[i % M]) ` `    ``{` `      ``return` `false``;` `    ``}` `  ``}` `  ``return` `true``;` `}`   `// Driver Code` `public` `static` `void` `Main(String[] args)` `{` `  ``String str1 = ``"abcabcabc"``;` `  ``String str2 = ``"abc"``;`   `  ``if` `(checkConcat(str1, str2)) ` `  ``{` `    ``Console.Write(``"Yes"``);` `  ``}` `  ``else` `  ``{` `    ``Console.Write(``"No"``);` `  ``}` `}` `}`   `// This code is contributed by 29AjayKumar`

Output

```Yes

```

Time Complexity: O(N)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.