#2 - Hamming Distance (6 kyu)
Instructions:
Task
The hamming distance between a pair of numbers is the number of binary bits that differ in their binary notation.
Example
For a = 25, b= 87, the result should be 4
25: 00011001
87: 01010111
The hamming distance between these two would be 4 ( the 2nd, 5th, 6th, 7th bit ).
Input/Output
[input] integer a
First Number. 1 <= a <= 2^20
[input] integer b
Second Number. 1 <= b <= 2^20
[output] an integer
My solution:
function hammingDistance (a, b) {
const decToBin= (n)=>{
return("00000000000000000000"+(n >>> 0).toString(2)).slice(-20)
}
let aBin = decToBin(a)
let bBin = decToBin(b)
let acc = 0;
for(let i = 0; i<20 ; i++ ){
if(aBin.charAt(i) !== bBin.charAt(i) ){
acc++
}
}
return acc
}
Explanation
I started converting the decimal number to binary code, for this I used .toString(2) to convert it to binary, but because I had some issues with the number of digits in the result, I added 20 zeros and then I sliced it so I eliminated the extra zeros and I could get the result of a 20 digits binary number.
Then I started a loop with 20 iterations because it is a 20 digits binary number that will check every element of the string and if they aren't equal it will add 1 to the accumulator which contains the last result.
Top comments (0)