Python: compruebe si dos strings son rotacionalmente equivalentes

A veces, mientras trabajamos con Python Strings, podemos tener problemas en los que necesitamos verificar si una string se puede derivar de otra al girar hacia la izquierda o hacia la derecha. Este tipo de problema puede tener aplicación en muchos dominios, como el desarrollo web y la programación competitiva. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_str1 = ‘GFG’, test_str2 = ‘FGG’
Salida : Verdadero

Entrada : test_str1 = ‘geeks’, test_str2 = ‘ksege’
Salida : Falso

Método n.º 1: Uso de loop + string slicing
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, realizamos la tarea de extraer strings para realizar todas las rotaciones posibles, para verificar si alguna rotación es igual a la otra string.

# Python3 code to demonstrate working of 
# Check if two strings are Rotationally Equivalent
# Using loop + string slicing
  
# initializing strings
test_str1 = 'geeks'
test_str2 = 'eksge'
  
# printing original strings
print("The original string 1 is : " + str(test_str1))
print("The original string 2 is : " + str(test_str2))
  
# Check if two strings are Rotationally Equivalent
# Using loop + string slicing
res = False
for idx in range(len(test_str1)):
        if test_str1[idx: ] + test_str1[ :idx] == test_str2:
            res = True
            break
  
# printing result 
print("Are two strings Rotationally equal ? : " + str(res)) 
Producción :

The original string 1 is : geeks
The original string 2 is : eksge
Are two strings Rotationally equal ? : True

Método #2: Usarany() + join() + enumerate()
Esta es una de las formas en que se puede realizar esta tarea. En esto, realizamos la tarea de verificar cualquier equivalente rotacional usando any() extraído usando una expresión de generador anidado y enumerate().

# Python3 code to demonstrate working of 
# Check if two strings are Rotationally Equivalent
# Using any() + join() + enumerate()
  
# initializing strings
test_str1 = 'geeks'
test_str2 = 'eksge'
  
# printing original strings
print("The original string 1 is : " + str(test_str1))
print("The original string 2 is : " + str(test_str2))
  
# Check if two strings are Rotationally Equivalent
# Using any() + join() + enumerate()
res = any(''.join([test_str2[idx2 - idx1] 
        for idx2, val2 in enumerate(test_str2)]) == test_str1
        for idx1, val1 in enumerate(test_str1))
  
# printing result 
print("Are two strings Rotationally equal ? : " + str(res)) 
Producción :

The original string 1 is : geeks
The original string 2 is : eksge
Are two strings Rotationally equal ? : True

Publicación traducida automáticamente

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