Comprobar la rotación de strings en Java

Dadas dos strings s1 y s2, escriba un fragmento para verificar si s2 es una rotación de s1. Las strings pueden contener duplicados.

Ejemplos:

Input :  s1 = "ABCD", s2 = "CDAB"
Output : True
String s1 is rotation of s2.

Input :  s1 = "ABAD", s2 = "ADAB"
Output : True

Input : s1 = ABCD, and s2 = ACBD 
Output : False

Una solución simple es buscar la primera aparición de s1 en s2. Para cada coincidencia, verifique si la string restante coincide circularmente.

Una solución eficiente es concatenar s1 consigo mismo. s2 es una rotación de s1 si y solo si es una substring de la string rotada. En Java, podemos usar string contains o indexOf para verificar la substring.

// Java program to check if two given strings are
//  rotations of each other
  
class StringRotation {
  
    /* Function checks if passed strings (str1 and str2)
       are rotations of each other */
    static boolean areRotations(String str1, String str2)
    {
        // There lengths must be same and str2 must be
        // a substring of str1 concatenated with str1.
        return (str1.length() == str2.length()) && 
               ((str1 + str1).contains(str2));
    }
  
    // Driver method
    public static void main(String[] args)
    {
        String str1 = "AACD";
        String str2 = "ACDA";
  
        if (areRotations(str1, str2))
            System.out.println("Yes");
        else
            System.out.printf("No");
    }
}
Producción:

Yes

Publicación traducida automáticamente

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