Python: número de posiciones donde las substrings coinciden con la longitud K

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))
Producción

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))
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *