Encuentre el mínimo común múltiplo (LCM) de strings dadas

Dadas dos strings str1 y str2 de longitudes N y M respectivamente. La tarea es encontrar el mínimo común múltiplo (MCM) de ambas strings y, si no existe, imprimir -1 .

Nota: MCM de dos strings es una string que se puede formar concatenando las strings entre sí y tiene la longitud más corta.

Ejemplos:

Entrada : str1 = “baba”, str2 = “ba”
Salida : baba
Explicación : “baba” es la string más pequeña que se puede obtener tanto de str1 como de str2.
Tenga en cuenta que también se puede formar «babababa», pero la longitud de la cuerda no es lo menos importante.
 

Entrada : str1 = “aba”, str2 = “ab”
Salida : -1
Explicación: No se puede formar tal string.

 

Enfoque : Este problema es similar a encontrar la string más corta formada al concatenar A x veces y B y veces . La tarea se resuelve haciendo que las longitudes de ambas strings sean iguales y luego verificando si ambas strings se vuelven iguales o no. Siga los pasos a continuación para resolver el problema:

  • Iterar hasta que las longitudes de ambas strings sean desiguales.
  • Si la longitud de str1 es menor que str2 , agregue str1 a sí mismo o haga lo mismo para str2 .
  • Después del ciclo, si ambos son iguales, imprima cualquier string, de lo contrario, imprima -1.

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

C++

// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the lcm of both strings
string findLcm(string str1, string str2)
{
    string x = str1, y = str2;
 
    // While their length is unequal
    while (x.length() != y.length()) {
        if (x.length() < y.length())
            x += str1;
        else
            y += str2;
    }
 
    if (x == y)
        return x;
    return "";
}
 
// Driver Code
int main()
{
    string str1 = "ba", str2 = "baba";
 
    string ans = findLcm(str1, str2);
    if (ans != "")
        cout << ans;
    else {
        cout << -1;
    }
    return 0;
}

Java

// Java program for the above approach
import java.util.*;
class GFG{
 
  // Function to find the lcm of both Strings
  static String findLcm(String str1, String str2)
  {
    String x = str1, y = str2;
 
    // While their length is unequal
    while (x.length() != y.length()) {
      if (x.length() < y.length())
        x += str1;
      else
        y += str2;
    }
 
    if (x.equals(y))
      return x;
    return "";
  }
 
  // Driver Code
  public static void main(String[] args)
  {
    String str1 = "ba", str2 = "baba";
 
    String ans = findLcm(str1, str2);
    if (ans != "")
      System.out.print(ans);
    else {
      System.out.print(-1);
    }
  }
}
 
// This code is contributed by shikhasingrajput

Python3

# Python code for the above approach
 
# Function to find the lcm of both strings
def findLcm(str1, str2):
    x = str1
    y = str2
 
    # While their length is unequal
    while (len(x) != len(y)):
        if (len(x) < len(y)):
            x += str1;
        else:
            y += str2;
 
    if (x == y):
        return x;
    return "";
 
# Driver Code
str1 = "ba"
str2 = "baba"
 
ans = findLcm(str1, str2)
if (ans != ""):
    print(ans);
else:
    print(-1);
 
# This code is contributed by gfgking

C#

// C# program for the above approach
using System;
class GFG
{
  // Function to find the lcm of both strings
  static string findLcm(string str1, string str2)
  {
    string x = str1, y = str2;
 
    // While their length is unequal
    while (x.Length != y.Length) {
      if (x.Length < y.Length)
        x += str1;
      else
        y += str2;
    }
 
    if (x == y)
      return x;
    return "";
  }
 
  // Driver Code
  public static void Main()
  {
    string str1 = "ba", str2 = "baba";
 
    string ans = findLcm(str1, str2);
    if (ans != "")
      Console.Write(ans);
    else {
      Console.Write(-1);
    }
  }
}
 
// This code is contributed by Samim Hossain Mondal.

Javascript

<script>
      // JavaScript code for the above approach
 
      // Function to find the lcm of both strings
      function findLcm(str1, str2) {
          let x = str1, y = str2;
 
          // While their length is unequal
          while (x.length != y.length) {
              if (x.length < y.length)
                  x += str1;
              else
                  y += str2;
          }
 
          if (x == y)
              return x;
          return "";
      }
 
      // Driver Code
 
      let str1 = "ba", str2 = "baba";
 
      let ans = findLcm(str1, str2);
      if (ans != "")
          document.write(ans);
      else {
          document.write(-1);
      }
 
     // This code is contributed by Potta Lokesh
  </script>
Producción

baba

Complejidad de Tiempo : O(N + M)
Espacio Auxiliar : O(N + M)

Publicación traducida automáticamente

Artículo escrito por hrithikgarg03188 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 *