Diccionario de Python | Comprobar si las representaciones binarias de dos números son anagramas

Dados dos números, debe verificar si son anagramas entre sí o no en representación binaria.

Ejemplos:

Input : a = 8, b = 4 
Output : Yes
Binary representations of both
numbers have same 0s and 1s.

Input : a = 4, b = 5
Output : No

Tenemos una solución existente para este problema, consulte Verifique si las representaciones binarias de dos números son un enlace de anagrama. Podemos resolver este problema rápidamente en python usando el método Counter (iterable) y Dictionary Comparison . El enfoque es simple,

  1. Convierta ambos números en su binario usando la función bin() .
  2. Dado que la representación binaria de ambos números podría diferir en longitud, agregaremos ceros al comienzo de la string más corta para que ambas strings tengan la misma longitud. es decir.; añadir ceros = abs(len(bin1)-len(bin2)).
  3. Convierta ambas strings de salida que contienen 0 y 1 devueltas por la función bin en un diccionario usando la función Counter() , con las teclas 0 y 1 y su recuento como valor. Compare ambos diccionarios, si el valor de 0 y 1 en ambos diccionarios es igual, entonces las representaciones binarias de dos números son anagramas; de lo contrario, no lo son.
# function to Check if binary representations
# of two numbers are anagram
from collections import Counter
  
def checkAnagram(num1,num2):
  
    # convert numbers into in binary
    # and remove first two characters of 
    # output string because bin function 
    # '0b' as prefix in output string
    bin1 = bin(num1)[2:]
    bin2 = bin(num2)[2:]
  
    # append zeros in shorter string
    zeros = abs(len(bin1)-len(bin2))
    if (len(bin1)>len(bin2)):
         bin2 = zeros * '0' + bin2
    else:
         bin1 = zeros * '0' + bin1
  
    # convert binary representations 
    # into dictionary
    dict1 = Counter(bin1)
    dict2 = Counter(bin2)
  
    # compare both dictionaries
    if dict1 == dict2:
         print('Yes')
    else:
         print('No')
  
# Driver program
if __name__ == "__main__":
    num1 = 8
    num2 = 4
    checkAnagram(num1,num2)
     

Producción:

Yes

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 *