大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C++技巧 > C++求解海明距离

C++求解海明距离

关键词:C++海明距离  阅读(856) 赞(10)

[摘要]本文是对C++求解海明距离的讲解,对学习C++编程技术有所帮助,与大家分享。

在信息领域,两个长度相等的字符串的海明距离是在相同位置上不同的字符的个数,也就是将一个字符串替换成另一个字符串需要的替换的次数。

例如:

xxxxyy和xxxxzz的海明距离是2;

111100和 111111的海明距离是2;

对于二进制数字来说,海明距离的结果相当于a^b结果中1的个数。

【字符串】

C++ Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
version:1.0
author:hellogiser
blog:http://www.cnblogs.com/hellogiser
date:2014/5/30
*/
//hammingdistanceoftwostrings
unsignedhamdist(constchar*str1,constchar*str2)
{
//aaabbaaacc
if(str1==NULL||str2==NULL)
return0;

intlen1=strlen(str1);
intlen2=strlen(str2);
if(len1!=len2)
return0;

unsigneddist=0;
while(*str1&&*str2)
{
dist+=(*str1!=*str2)?1:0;
str1++;
str2++;
}
returndist;
}

【数字】

C++ Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
version:1.0
author:hellogiser
blog:http://www.cnblogs.com/hellogiser
date:2014/5/30
*/
//hammingdistanceoftwointeger0-1bits
unsignedhamdist(unsignedx,unsignedy)
{
//1111111100
unsigneddist=0,val=x^y;//XOR

//Countthenumberofsetbits
while(val)
{
++dist;
val&=val-1;
}

returndist;
}


相关评论