Related Articles

# Check if a string is concatenation of another given string

• Last Updated : 18 May, 2021

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`

## Javascript

 ``
Output
`Yes`

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

Attention reader! Don’t stop learning now. Participate in the Scholorship Test for First-Step-to-DSA Course for Class 9 to 12 students.

My Personal Notes arrow_drop_up