¿Recibimos una string y necesitamos eliminar todos los duplicados de ella? ¿Cuál será el resultado si el orden de los caracteres es importante? Ejemplos:
Entrada: geeksforgeeks
Salida: efgkors
Este problema tiene una solución existente, consulte Eliminar todos los duplicados de una string dada .
Método 1:
Python3
from collections import OrderedDict # Function to remove all duplicates from string # and order does not matter def removeDupWithoutOrder(str): # set() --> A Set is an unordered collection # data type that is iterable, mutable, # and has no duplicate elements. # "".join() --> It joins two adjacent elements in # iterable with any symbol defined in # "" ( double quotes ) and returns a # single string return "".join(set(str)) # Function to remove all duplicates from string # and keep the order of characters same def removeDupWithOrder(str): return "".join(OrderedDict.fromkeys(str)) # Driver program if __name__ == "__main__": str = "geeksforgeeks" print ("Without Order = ",removeDupWithoutOrder(str)) print ("With Order = ",removeDupWithOrder(str))
Without Order = foskerg With Order = geksfor
Complejidad temporal: O(n)
Espacio auxiliar: O(n)
Método 2:
Python3
def removeDuplicate(str): s=set(str) s="".join(s) print("Without Order:",s) t="" for i in str: if(i in t): pass else: t=t+i print("With Order:",t) str="geeksforgeeks" removeDuplicate(str)
Without Order: kogerfs With Order: g With Order: ge With Order: ge With Order: gek With Order: geks With Order: geksf With Order: geksfo With Order: geksfor With Order: geksfor With Order: geksfor With Order: geksfor With Order: geksfor With Order: geksfor
Complejidad temporal: O(n)
Espacio auxiliar: O(n)
¿Qué hacen OrderedDict y fromkeys()?
Un OrderedDict es un diccionario que recuerda el orden de las claves que se insertaron primero. Si una nueva entrada sobrescribe una entrada existente, la posición de inserción original no se modifica.
Por ejemplo, vea el siguiente fragmento de código:
Python3
from collections import OrderedDict ordinary_dictionary = {} ordinary_dictionary['a'] = 1 ordinary_dictionary['b'] = 2 ordinary_dictionary['c'] = 3 ordinary_dictionary['d'] = 4 ordinary_dictionary['e'] = 5 # Output = {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4} print (ordinary_dictionary) ordered_dictionary = OrderedDict() ordered_dictionary['a'] = 1 ordered_dictionary['b'] = 2 ordered_dictionary['c'] = 3 ordered_dictionary['d'] = 4 ordered_dictionary['e'] = 5 # Output = {'a':1,'b':2,'c':3,'d':4,'e':5} print (ordered_dictionary)
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])
Complejidad temporal: O(n)
Espacio auxiliar: O(1)
fromkeys() crea un nuevo diccionario con claves de seq y valores establecidos en value y devuelve una lista de claves, fromkeys(seq[, value]) es la sintaxis para el método fromkeys(). Parámetros:
- seq : esta es la lista de valores que se usaría para la preparación de claves de diccionario.
- valor: esto es opcional, si se proporciona, el valor se establecería en este valor.
Por ejemplo, vea el siguiente fragmento de código:
Python3
from collections import OrderedDict seq = ('name', 'age', 'gender') dict = OrderedDict.fromkeys(seq) # Output = {'age': None, 'name': None, 'gender': None} print (str(dict)) dict = OrderedDict.fromkeys(seq, 10) # Output = {'age': 10, 'name': 10, 'gender': 10} print (str(dict))
OrderedDict([('name', None), ('age', None), ('gender', None)]) OrderedDict([('name', 10), ('age', 10), ('gender', 10)])
Complejidad temporal: O(n)
Espacio auxiliar: O(1)
Este artículo es una contribución de Shashank Mishra (Gullu) . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA