Dada una lista y una string, pruebe si la string se puede hacer a partir de caracteres de lista.
Ejemplos:
Entrada : test_list = [‘g’, ‘g’, ‘e’, ’k’, ‘s’, ‘4’, ‘g’, ‘g’, ‘e’, ’s’, ‘e’, ’ e’, ‘4’, ‘k’], test_str = ‘geeks4geeks’
Salida : verdadera
Explicación : la string se puede hacer de acuerdo con las frecuencias de los caracteres.Entrada : test_list = [‘s’, ‘4’, ‘g’, ‘g’, ‘e’, ’s’, ‘e’, ’e’, ’4′, ‘k’], test_str = ‘geeks4geeks ‘
Salida : Falso
Explicación : La string no se puede hacer de acuerdo con las frecuencias de los caracteres.
Método #1: Usando all() + count()
En esto, probamos que todos los caracteres contados desde la string sean menores que la frecuencia de cada carácter en la lista. Las frecuencias se extraen utilizando count().
Python3
# Python3 code to demonstrate working of # Test for Word construction from character list # Using all() + count() # initializing list test_list = ['g', 'g', 'e', 'k', 's', '4', 'g', 'g', 'e', 's', 'e', 'e', '4', 'k'] # printing original list print("The original list is : " + str(test_list)) # initializing string test_str = 'geeks4geeks' # checking for frequency of chars less than in list res = all(test_str.count(chr) <= test_list.count(chr) for chr in test_str) # printing result print("Is word construction possible ? : " + str(res))
Producción:
La lista original es: [‘g’, ‘g’, ‘e’, ’k’, ‘s’, ‘4’, ‘g’, ‘g’, ‘e’, ’s’, ‘e’, ‘e’, ‘4’, ‘k’]
¿Es posible la construcción de palabras? : Verdadero
Método #2: Usando Counter()
En esto, calculamos las frecuencias usando Counter(), y luego realizamos la resta de palabras de los caracteres de la lista. En caso de una lista vacía, significa que no es posible formar una palabra.
Python3
# Python3 code to demonstrate working of # Test for Word construction from character list # Using Counter() from collections import Counter # initializing list test_list = ['g', 'g', 'e', 'k', 's', '4', 'g', 'g', 'e', 's', 'e', 'e', '4', 'k'] # printing original list print("The original list is : " + str(test_list)) # initializing string test_str = 'geeks4geeks' # checking for frequency of chars less than in list res = not bool(dict(Counter(test_str) - Counter(test_list))) # printing result print("Is word construction possible ? : " + str(res))
Producción:
La lista original es: [‘g’, ‘g’, ‘e’, ’k’, ‘s’, ‘4’, ‘g’, ‘g’, ‘e’, ’s’, ‘e’, ‘e’, ‘4’, ‘k’]
¿Es posible la construcción de palabras? : Verdadero
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA