Dada una string que contiene caracteres alfabéticos inferiores, debemos eliminar como máximo un carácter de esta string de tal manera que la frecuencia de cada carácter distinto sea la misma en la string.
Ejemplos:
Input : str = “xyyz” Output : Yes We can remove character ’y’ from above string to make the frequency of each character same. Input : str = “xyyzz” Output : Yes We can remove character ‘x’ from above string to make the frequency of each character same. Input : str = “xxxxyyzz” Output : No It is not possible to make frequency of each character same just by removing at most one character from above string.
Este problema tiene una solución existente, consulte Verifique si la frecuencia de todos los caracteres puede volverse igual mediante un enlace de eliminación . Resolveremos este problema rápidamente en Python. El enfoque es muy simple,
- Necesitamos contar la frecuencia de cada letra en la string, para esto usaremos el método Counter (input) , devuelve un diccionario que tiene caracteres como claves y sus respectivas frecuencias como valores.
- Ahora extraiga la lista de frecuencias de cada carácter e inserte estos valores en la estructura de datos Set() en python.
- Dado que el conjunto contiene valores únicos, si el tamaño del conjunto es 1, eso significa que las frecuencias de todos los caracteres fueron iguales, si el tamaño del conjunto es 2, verifique si el valor del primer elemento es 1 o no (si es 1, entonces podemos hacer la misma frecuencia eliminando un carácter como máximo, de lo contrario no es posible).
# Function to Check if frequency of all characters # can become same by one removal from collections import Counter def allSame( input ): # calculate frequency of each character # and convert string into dictionary dict = Counter( input ) # now get list of all values and push it # in set same = list ( set ( dict .values())) if len (same)> 2 : print ( 'No' ) elif len (same) = = 2 and same[ 1 ] - same[ 0 ]> 1 : print ( 'No' ) else : print ( 'Yes' ) # now check if frequency of all characters # can become same # Driver program if __name__ = = "__main__" : input = 'xxxyyzzt' allSame( input ) |
Producción:
No
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