首页 > 代码库 > 64. 海明距离(Hamming Distance)
64. 海明距离(Hamming Distance)
【本文链接】
http://www.cnblogs.com/hellogiser/p/hamming-distance.html
【介绍】
在信息领域,两个长度相等的字符串的海明距离是在相同位置上不同的字符的个数,也就是将一个字符串替换成另一个字符串需要的替换的次数。
例如:
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 */ // 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
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 */ // 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; } |
【参考】
http://blog.csdn.net/fuyangchang/article/details/5637464
http://en.wikipedia.org/wiki/Hamming_distance
http://my.oschina.net/u/1401481/blog/223223
【本文链接】
http://www.cnblogs.com/hellogiser/p/hamming-distance.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。