Comprobar si una string es la concatenación de otra string dada

Dadas dos strings str1 y str2 de longitud N y M respectivamente, la tarea es verificar si la string str1 se puede formar concatenando la string str2 repetidamente o no.

Ejemplos:

Entrada: str1 = “abcabcabc”, str2 = “abc”
Salida:
Explicación: 
Concatenar la string str2 tres veces genera la string (“abc” + “abc” + “abc” = ) “abcabcabc”.
Por lo tanto, la salida requerida es Sí.

Entrada: str1 = «abcabcab», str2 = «abc»
Salida: No

Enfoque: siga los pasos a continuación para resolver el problema:

  • Atraviesa las strings str1 y str2 .
  • Para cada carácter de str1 y str2 , verifique si str1[i] == str2[i % M] o no.
  • Si se encuentra que es falso para cualquier carácter, escriba «No» .
  • De lo contrario, escriba «Sí» .

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program to implement
// the above approach
 
#include <bits/stdc++.h>
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

<script>
// javascript program for the
// above approach
 
// Function to check if a String is
// concatenation of another String
function checkConcat(str1, str2)
{
      
    // Stores the length of str2
    let N = str1.length;
  
    // Stores the length of str1
    let M = str2.length;
  
    // If M is not multiple of N
    if (N % M != 0)
    {
        return false;
    }
  
    // Traverse both the Strings
    for(let i = 0; i < N; i++)
    {
          
        // If str1 is not concatenation
        // of str2
        if (str1[i] !=
            str2[i % M])
        {
            return false;
        }
    }
    return true;
}
  
// Driver Code
 
    let str1 = "abcabcabc";
    let str2 = "abc";
  
    if (checkConcat(str1, str2))
    {
        document.write("Yes");
    }
    else
    {
        document.write("No");
    }
           
</script>
Producción

Yes

Complejidad temporal: O(N) 
Espacio auxiliar: O(1) 

Publicación traducida automáticamente

Artículo escrito por crisscross y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *