以下是关于C++实例之海明距离问题解析,希望可以加深大家对于C++实例之海明距离问题的理解,下面就一起来看看C++实例之海明距离问题解析方面的内容吧。
【海明距离介绍 】
在信息领域,两个长度相等的字符串 的海明距离是在相同位置上不同的字符的个数,也就是将一个字符串替换成另一个字符串需要的替换的次数。
例如:
xxxxyy 和xxxxzz 的海明距离是2;
111100 和 111111 的海明距离是2;
对于二进制数字来说,海明距离的结果相当于a^b结果中1的个数。
【字符串】
C++ Code
/*
version: 1.0
author: hellogiser
date: 2014/5/30
*/
// hamming distance of two strings
unsigned hamdist(const char *str1, const char *str2)
{
// aaabb aaacc
if (str1 == NULL || str2 == NULL)
return 0;
int len1 = strlen(str1);
int len2 = strlen(str2);
if (len1 != len2)
return 0;
unsigned dist = 0;
while(*str1 && *str2)
{
dist += (*str1 != *str2) ? 1 : 0;
str1++;
str2++;
}
return dist;
}
【数字】
C++ Code
/*
version: 1.0
author: hellogiser
date: 2014/5/30
*/
// hamming distance of two integer 0-1 bits
unsigned hamdist(unsigned x, unsigned y)
{
// 11111 11100
unsigned dist = 0, val = x ^ y; // XOR
// Count the number of set bits
while(val)
{
++dist;
val &= val – 1;
}
return dist;
}
以上就是对于C++实例之海明距离问题解析的全部内容叙述,更多有关C++实例之海明距离方面的知识,请继续关注拓胜科技c++技术资讯频道,或者咨询拓胜网络客服了解c++培训方面的问题。