標籤:
Java執行個體9 - 漢明距離 Hamming Distance
http://blog.csdn.net/kindterry/article/details/6581344
/**在資訊理論中,兩個等長字串之間的漢明距離
* 是兩個字串對應位置上不同字元的個數,
* 換句話說,漢明距離就是將一個字串替換成另外一個字串所需要替換的字元長度。
*例如,1011101和1001001之間的漢明距離是2,
*toned和roses之間的漢明距離是3.
*漢明重量是字串相對於同樣長度的零字串的漢明距離,
*也就是說,它是字串中非零的元素個數:對於二進位字串來說,就是 1 的個數,
*所以 11101 的漢明重量是 4。
*下面的代碼展示了在Java中如何計算漢明距離和漢明重量。
*/
package re;
public class HammingDistance {
public static void main(String[] args) {
String str1 = "abcdefg";
String str2 = "aacceeg";
HammingDistance hd = new HammingDistance();
int distance = hd.getDistance(str1, str2);
System.out.println("distance is " + distance);
int weight = hd.getWeight(255);
System.out.println("weight is " + weight);
}
/**
* calculate Hamming Distance between two strings
*
* @author
* @param str1 the 1st string
* @param str2 the 2nd string
* @return Hamming Distance between str1 and str2
*/
public int getDistance(String str1, String str2) {
int distance;
if (str1.length() != str2.length()) {
distance = -1;
} else {
distance = 0;
for (int i = 0; i < str1.length(); i++) {
if (str1.charAt(i) != str2.charAt(i)) {
distance++;
}
}
}
return distance;
}
/**
* calculate Hamming weight for binary number
* @author
* @param i the binary number
* @return Hamming weight of the binary number
*/
public int getWeight(int i) {
int n;
for (n = 0; i > 0; n++) {
i &= (i - 1);
}
return n;
}
}
相似演算法 ,Java執行個體9 - 漢明距離 Hamming Distance