程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 64. 海明距離(Hamming Distance)

64. 海明距離(Hamming Distance)

編輯:C++入門知識

【本文鏈接】

http://www.cnblogs.com/hellogiser/p/hamming-distance.html

介紹

在信息領域,兩個長度相等的字符串的海明距離是在相同位置上不同的字符的個數,也就是將一個字符串替換成另一個字符串需要的替換的次數。

例如:

xxxxyyxxxxzz的海明距離是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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved