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 : VerdaderoEntrada : 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))
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))
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