64. 海明距離(Hamming Distance)


【本文鏈接】

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM