汉明距离(Hamming Distance)是用于衡量两个等长字符串(在数据通信中通常是二进制串)之间差异程度的一个度量。它计算的是两个字符串在相同位置上不同字符(或比特)的数量。
汉明距离是以理查德·卫斯里·汉明的名字命名的,在信息论中,它表示两个等长字符串在对应位置上不同字符的个数。简单地说,汉明距离就是将一个字符串转换成另一个字符串所需替换的字符数。
汉明距离在多个领域都有广泛的应用,包括但不限于:
汉明距离的数学公式表示为:

假设我们有两个二进制字符串 a = 10110 和 b = 11010,我们需要计算它们之间的汉明距离。
因此,字符串 a = 10110 和 b = 11010 之间的汉明距离为 2。
在Java中实现计算两个字符串(通常假定为等长二进制字符串,但也可以是任意字符的字符串)之间的汉明距离,可以通过遍历字符串的每个字符并比较它们是否相同来完成。以下是一个简单的Java方法示例,它计算了两个字符串之间的汉明距离:
public class HammingDistance {
/**
* 计算两个字符串之间的汉明距离
*
* @param str1 第一个字符串
* @param str2 第二个字符串
* @return 汉明距离
* @throws IllegalArgumentException 如果两个字符串长度不等
*/
public static int calculateHammingDistance(String str1, String str2) {
if (str1.length() != str2.length()) {
throw new IllegalArgumentException("两个字符串的长度必须相等");
}
int distance = 0;
for (int i = 0; i < str1.length(); i++) {
if (str1.charAt(i) != str2.charAt(i)) {
distance++;
}
}
return distance;
}
public static void main(String[] args) {
String binaryString1 = "10110";
String binaryString2 = "11010";
int hammingDistance = calculateHammingDistance(binaryString1, binaryString2);
System.out.println("汉明距离: " + hammingDistance); // 输出应为2
}
}在上面的代码中,calculateHammingDistance 方法首先检查两个字符串的长度是否相等,然后使用一个循环遍历字符串的每个字符,并比较它们是否相同。如果字符不同,则汉明距离增加1。最后,方法返回计算得到的汉明距离。
在 main 方法中,我们创建了两个二进制字符串,并调用了 calculateHammingDistance 方法来计算并打印这两个字符串之间的汉明距离。