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