Given two integers x
, and y
return the number of positions where their values differ in their binary representations as a 32-bit integer.
Example 1
Input
x = 9
y = 5
Output
2
9
in binary is 1001
and 5
in binary is 0101
, so indices 2 and 3 are different.
class Solution:
def solve(self, x, y):
ans = 0
while x or y:
ans += (x & 1) ^ (y & 1) x >>= 1 y >>= 1
return ans
Elegant approach:
You can use xor operation, xor’s the given decimal numbers bitwise on their corresponding binary notation.
So, xor of 5 and 9,
5= 01019= 1001 (^)
—-------
1100 =12 in decimal
Now convert the decimal to bin and count the no.of 1’s in the corresponding binary string.
class Solution:
def solve(self, x, y):
a = bin(x ^ y)
return(a.count("1"))