K’th Carácter no repetido en Python usando List Comprehension y OrderedDict

Dada una string y un número k, encuentre el k-ésimo carácter no repetido en la string. Considere una string de entrada grande con lacs de caracteres y un juego de caracteres pequeño. ¿Cómo encontrar el carácter haciendo solo un recorrido de la string de entrada? Ejemplos:

Input : str = geeksforgeeks, k = 3
Output : r
First non-repeating character is f,
second is o and third is r.

Input : str = geeksforgeeks, k = 2
Output : o

Input : str = geeksforgeeks, k = 4
Output : Less than k non-repeating
         characters in input.

Este problema tiene una solución existente, consulte el enlace. Podemos resolver este problema rápidamente en python usando List Comprehension y OrderedDict

Implementación:

Python3

# Function to find k'th non repeating character
# in string
from collections import OrderedDict
 
def kthRepeating(input,k):
 
    # OrderedDict returns a dictionary data
        # structure having characters of input
    # string as keys in the same order they
        # were inserted and 0 as their default value
    dict=OrderedDict.fromkeys(input,0)
 
    # now traverse input string to calculate
        # frequency of each character
    for ch in input:
        dict[ch]+=1
 
    # now extract list of all keys whose value
        # is 1 from dict Ordered Dictionary
    nonRepeatDict = [key for (key,value) in dict.items() if value==1]
     
    # now return (k-1)th character from above list
    if len(nonRepeatDict) < k:
        return 'Less than k non-repeating characters in input.'
    else:
        return nonRepeatDict[k-1]
 
# Driver function
if __name__ == "__main__":
    input = "geeksforgeeks"
    k = 3
    print (kthRepeating(input, k))
Producción

r

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 *