Dada una string S, elimine todos los duplicados consecutivos. Ejemplos:
Input : aaaaabbbbbb Output : ab Input : geeksforgeeks Output : geksforgeks Input : aabccba Output : abcba
Tenemos una solución existente para este problema, consulte Eliminar todos los duplicados consecutivos del enlace de string. Podemos resolver este problema en python rápidamente usando el método itertools.groupby() .
¿Cómo funciona itertools.groupby(iterable,key[opcional]) en Python?
Agrupar por método toma dos entradas, una es iterable (lista, tupla, diccionario) y la segunda es la función clave que calcula las claves para cada elemento presente en iterable. Devuelve clave e iterable de elementos agrupados. Si la función clave no se especifica o es Ninguna, la clave se establece de forma predeterminada en una función de identidad y devuelve el elemento sin cambios. Por ejemplo,
Python3
numbers = [1, 1, 1, 3, 3, 2, 2, 2, 1, 1] import itertools for (key,group) in itertools.groupby(numbers): print (key,list(group))
1 [1, 1, 1] 3 [3, 3] 2 [2, 2, 2] 1 [1, 1]
Python3
# function to remove all consecutive duplicates # from the string in Python from itertools import groupby def removeAllConsecutive(input): # group all consecutive characters based on their # order in string and we are only concerned # about first character of each consecutive substring # in given string, so key value will work for us # and we will join these keys without space to # generate resultant string result = [] for (key,group) in groupby(input): result.append(key) print (''.join(result)) # Driver program if __name__ == "__main__": input = 'aaaaabbbbbb' removeAllConsecutive(input)
ab
Complejidad temporal : O(n)
Espacio auxiliar : O(n)
Publicación traducida automáticamente
Artículo escrito por Shashank Mishra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA