Python | Verifique el orden de los caracteres en la string usando OrderedDict()

Dada una string de entrada y un patrón, compruebe si los caracteres de la string de entrada siguen el mismo orden determinado por los caracteres presentes en el patrón. Suponga que no habrá caracteres duplicados en el patrón.

Ejemplos:

Input: 
string = "engineers rock"
pattern = "er";
Output: true
Explanation: 
All 'e' in the input string are before all 'r'.


Input: 
string = "engineers rock"
pattern = "gsr";
Output: false
Explanation:
There are one 'r' before 's' in the input string.

Tenemos una solución existente para este problema, consulte Verifique si la string sigue el orden de los caracteres definidos por un patrón o no | conjunto 1 . Aquí resolvemos este problema rápidamente en python usando OrderedDict() . El enfoque es muy simple,

  • Cree un OrderedDict de string de entrada que contenga caracteres de strings de entrada solo como clave .
  • Ahora establezca un puntero al comienzo de la string de patrón.
  • Ahora recorra OrderedDict generado y haga coincidir las claves con el carácter individual de la string de patrón, si la clave y el carácter coinciden entre sí, incremente el puntero en 1.
  • Si el puntero del patrón llega al final, significa que la string sigue el orden de los caracteres definidos por un patrón; de lo contrario, no.
# Function to check if string follows order of 
# characters defined by a pattern 
from collections import OrderedDict 
  
def checkOrder(input, pattern): 
      
    # create empty OrderedDict 
    # output will be like {'a': None,'b': None, 'c': None} 
    dict = OrderedDict.fromkeys(input) 
  
    # traverse generated OrderedDict parallel with 
    # pattern string to check if order of characters 
    # are same or not 
    ptrlen = 0
    for key,value in dict.items(): 
        if (key == pattern[ptrlen]): 
            ptrlen = ptrlen + 1
          
        # check if we have traverse complete 
        # pattern string 
        if (ptrlen == (len(pattern))): 
            return 'true'
  
    # if we come out from for loop that means 
    # order was mismatched 
    return 'false'
  
# Driver program 
if __name__ == "__main__": 
    input = 'engineers rock'
    pattern = 'er'
    print (checkOrder(input,pattern)) 

Producción:

true

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.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

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 *