Diccionario de Python, ajuste y contador para verificar si las frecuencias pueden volverse iguales

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,

  1. 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.
  2. Ahora extraiga la lista de frecuencias de cada carácter e inserte estos valores en la estructura de datos Set() en python.
  3. 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).
  4. # 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

Deja una respuesta

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