相似演算法 ,Java執行個體9 - 漢明距離 Hamming Distance

來源:互聯網
上載者:User

標籤:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.