Dadas 2 strings, cuente las posiciones donde las substrings de longitud K coinciden.
Entrada : test_str1 = ‘geeksforgeeks’, test_str2 = ‘peeksformeeks’, K = 4 Salida : 4 Explicación : 4 posiciones coinciden con K substrings de longitud. Entrada : test_str1 = ‘geeksforgeeks’, test_str2 = ‘peeksformeeks’, K = 5 Salida : 3 Explicación : 3 posiciones coinciden con K substrings de longitud.
Método n. ° 1: Usar comprensión de lista + min() + rebanado
En esto, iteramos a través de las strings hasta la longitud de la string mínima, y la comparación se realiza cortando usando la división de strings. La iteración se realiza a través de un bucle dentro de la comprensión de la lista.
Python3
# Python3 code to demonstrate working of # Number of positions where Substrings Match of Length K # Using list comprehension + min() + slicing # initializing strings test_str1 = 'geeksforgeeks' test_str2 = 'peeksformeeks' # printing original strings print("The original string 1 is : " + str(test_str1)) print("The original string 2 is : " + str(test_str2)) # initializing K K = 3 # checking for substrings, # using len() to get total count res = len([test_str1[idx : idx + K] for idx in range(min(len(test_str1), len(test_str2)) - K - 1) if test_str1[idx : idx + K] == test_str2[idx : idx + K]]) # printing result print("Number of positions of matching K length Substrings : " + str(res))
The original string 1 is : geeksforgeeks The original string 2 is : peeksformeeks Number of positions of matching K length Substrings : 5
Método #2: Usando map() + comprensión de lista
En esto, extraemos todas las substrings de longitud K de una string y luego usamos el operador y el mapa, verificamos cada substring si está presente en otra String, esto ignora el factor posicional del problema.
Python3
# Python3 code to demonstrate working of # Number of positions where Substrings Match of Length K # Using map() + list comprehension # initializing strings test_str1 = 'geeksforgeeks' test_str2 = 'peeksformeeks' # printing original strings print("The original string 1 is : " + str(test_str1)) print("The original string 2 is : " + str(test_str2)) # initializing K K = 3 # Extracting Substrings subs_str = [test_str1[idx : idx + K] for idx in range(len(test_str1) - K - 1)] # checking in other string # using count() to get number res = list(map(lambda ele: ele in test_str2, subs_str)).count(True) # printing result print("Number of positions of matching K length Substrings : " + str(res))
The original string 1 is : geeksforgeeks The original string 2 is : peeksformeeks Number of positions of matching K length Substrings : 5
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