题目链接:https://leetcode-cn.com/problems/hamming-distance/
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。
注意:
0 ≤ x, y < 231.
示例:
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。
1 int hammingDistance(int x, int y){
2 int a1[100];
3 int a2[100];
4 int t1=0,t2=0;
5 while(x){
6 a1[t1++]=x%2;
7 x/=2;
8 }
9 while(y){
10 a2[t2++]=y%2;
11 y/=2;
12 }
13 for(int i=0;i<t1/2;i++){
14 int t=a1[i];
15 a1[i]=a1[t1-i-1];
16 a1[t1-i-1]=t;
17 }
18 for(int i=0;i<t2/2;i++){
19 int t=a2[i];
20 a2[i]=a2[t2-i-1];
21 a2[t2-i-1]=t;
22 }
23 int sum=0;
24 if(t1>=t2){
25 for(int i=0;i<t1-t2;i++){
26 if(a1[i]) sum++;
27 }
28 for(int i=t1-t2;i<t1;i++){
29 if(a1[i]!=a2[i-t1+t2]) sum++;
30 }
31 }else{
32 for(int i=0;i<t2-t1;i++){
33 if(a2[i]) sum++;
34 }
35 for(int i=t2-t1;i<t2;i++){
36 if(a2[i]!=a1[i-t2+t1]) sum++;
37 }
38 }
39 return sum;
40 }