LeetCode 461. 汉明距离

ⅰ亾dé卋堺 提交于 2019-11-27 04:40:13

题目链接: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 }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!