Python – Consecución más larga sin K en String

Dada una String, encuentre la longitud de la consecuencia más larga, en la que K no aparece.

Entrada : test_str = ‘geeksforgeeks es mejor para geeks’, K = ‘e’
Salida : 9
Explicación : de s en mejor a e en geeks, la novena letra es «e».

Entrada : test_str = ‘geeksforgeeks’, K = ‘e’
Salida : 7
Explicación : de k a e, la séptima letra es e, el recorrido más largo.

Método #1: Usar bucle

Realizamos esto en 2 pasos, en el primero iteramos para que todos los elementos obtengan índices de K, y luego en el siguiente paso encontramos la diferencia máxima entre caracteres consecutivos.

Python3

# Python3 code to demonstrate working of 
# Longest Consecution without K in String
# Using loop
  
# initializing string
test_str = 'geeksforgeeks is best for geeks'
  
# printing original string
print("The original string is : " + str(test_str))
  
# initializing K 
K = 'e'
  
# getting all indices 
indxs = []
for idx, ele in enumerate(test_str):
    if ele == 'e':
        indxs.append(idx)
  
# getting difference 
diffs = []
for idx in range(len(indxs) - 1):
    diffs.append(indxs[idx + 1] - indxs[idx])
  
# getting max diff using max()
res = max(diffs)
  
# printing result 
print("Longest run : " + str(res)) 
Producción

The original string is : geeksforgeeks is best for geeks
Longest run : 9

Método #2: Usando filter() + lambda + zip() + comprensión de lista + max()

En esto, obtenemos el índice de K elementos usando filter() + lambda y zip() + list comprehension se usa para obtener diferencias entre índices. Publique que, max() se usa para extraer la diferencia máxima.

Python3

# Python3 code to demonstrate working of 
# Longest Consecution without K in String
# Using filter() + lambda + zip() + list comprehension + max()
  
# initializing string
test_str = 'geeksforgeeks is best for geeks'
  
# printing original string
print("The original string is : " + str(test_str))
  
# initializing K 
K = 'e'
  
# getting all indices using filter + lambda
indxs = list(filter(lambda ele: test_str[ele] == 'e', range(len(test_str)))) 
  
# getting difference using zip()
# negative index, for getting successive elements 
diffs = [j - i for i, j in zip(indxs[: -1], indxs[1 :])] 
  
# getting max diff 
res = max(diffs)
  
# printing result 
print("Longest run : " + str(res)) 
Producción

The original string is : geeksforgeeks is best for geeks
Longest run : 9

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 *