Eliminar todos los duplicados de una string dada en Python

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

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

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

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

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

Deja una respuesta

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