[LeetCode]461. Hamming Distance 求汉明距离

为了锻炼算法能力又开始做题了,还是先从LeetCode的Easy下手。
这个题要我们求两个数的汉明距离,其实看起来很高深,其实ACM啥的对我来说,既然当前还掌握不了高深的算法,倒不如看规律去做!
例子:

Input: x = 1, y = 4
Output: 2
Explanation:
    1   (0 0 0 1)
    4   (0 1 0 0)
           ↑   ↑

这里看到其实就是两个数二进制做异或,就是"^"符号。
1在二进制里是001
4在二进制里是100
他俩按位异或,相同就返回0,不同就返回1
所以最后返回的结果是101,换回十进制就是5。
这时候 汉明距离 就是这个返回的值二进制状态下 有多少个1.
101里面有俩“1”,所以汉明距离为2.

public class Solution {
    public int hammingDistance(int x, int y) {
        int z = x^y;
        int res = 0;
        while(z!=0){
            if(z%2==1){
                res++;
            }
            z=z/2;
        }
        return res;
    }
}

你可能感兴趣的:([LeetCode]461. Hamming Distance 求汉明距离)