Ejemplo de intersección de contador y diccionario de Python (haga una string usando eliminación y reordenación)

Dadas dos strings, encuentre si podemos hacer la primera string a partir de la segunda eliminando algunos caracteres de la segunda y reorganizando los caracteres restantes. 

Ejemplos:

Input : s1 = ABHISHEKsinGH
      : s2 = gfhfBHkooIHnfndSHEKsiAnG
Output : Possible

Input : s1 = Hello
      : s2 = dnaKfhelddf
Output : Not Possible

Input : s1 = GeeksforGeeks
      : s2 = rteksfoGrdsskGeggehes
Output : Possible

Tenemos una solución existente para este problema, consulte Crear una string a partir de otra mediante la eliminación y reorganización del enlace de caracteres. Trataremos este problema rápidamente en python. El enfoque es muy simple,

  1. Convierta ambas strings en un diccionario usando el método Counter (iterable) , cada diccionario contiene caracteres dentro de la string como Clave y sus frecuencias como Valor.
  2. Ahora tome la intersección de dos diccionarios y compare la salida resultante con el diccionario de la primera string, si ambos son iguales, eso significa que es posible convertir la string, de lo contrario no.

Implementación:

Python3

# Python code to find if we can make first string
# from second by deleting some characters from
# second and rearranging remaining characters.
from collections import Counter
 
def makeString(str1,str2):
 
    # convert both strings into dictionaries
    # output will be like str1="aabbcc",
    # dict1={'a':2,'b':2,'c':2}
    # str2 = 'abbbcc', dict2={'a':1,'b':3,'c':2}
    dict1 = Counter(str1)
    dict2 = Counter(str2)
 
    # take intersection of two dictionaries
    # output will be result = {'a':1,'b':2,'c':2}
    result = dict1 & dict2
 
    # compare resultant dictionary with first
    # dictionary comparison first compares keys
    # and then compares their corresponding values
    return result == dict1
 
# Driver program
if __name__ == "__main__":
    str1 = 'ABHISHEKsinGH'
    str2 = 'gfhfBHkooIHnfndSHEKsiAnG'
    if (makeString(str1,str2)==True):
        print("Possible")
    else:
        print("Not Possible")
Producción

Possible

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

Deja una respuesta

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