Python: prueba para la construcción de Word a partir de la lista de caracteres

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

Deja una respuesta

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