java 使用Levenshtein Distance 计算字符串相似度
时间: 2024-03-10 08:45:58 浏览: 74
Java中可以通过编写Levenshtein Distance算法来计算字符串相似度。以下是一个基于动态规划的实现示例代码:
```java
public class LevenshteinDistance {
public static int calculate(String s1, String s2) {
int[][] distance = new int[s1.length() + 1][s2.length() + 1];
for (int i = 0; i <= s1.length(); i++) {
distance[i][0] = i;
}
for (int j = 1; j <= s2.length(); j++) {
distance[0][j] = j;
}
for (int i = 1; i <= s1.length(); i++) {
for (int j = 1; j <= s2.length(); j++) {
int cost = s1.charAt(i - 1) == s2.charAt(j - 1) ? 0 : 1;
distance[i][j] = Math.min(Math.min(distance[i - 1][j] + 1, distance[i][j - 1] + 1),
distance[i - 1][j - 1] + cost);
}
}
return distance[s1.length()][s2.length()];
}
}
```
在上述代码中,我们首先定义一个二维数组distance,用于存储字符串s1和s2之间的编辑距离。然后,我们初始化distance数组的第一行和第一列。接着,我们通过两个嵌套的循环遍历distance数组,计算编辑距离。最后,我们返回distance数组的最后一个元素,即s1和s2之间的编辑距离。
可以通过以下方式调用LevenshteinDistance类中的calculate方法来计算两个字符串之间的编辑距离:
```java
String s1 = "kitten";
String s2 = "sitting";
int distance = LevenshteinDistance.calculate(s1, s2);
System.out.println("编辑距离为:" + distance);
```
运行结果为:
```
编辑距离为:3
```
这表明,将字符串"kitten"转变成字符串"sitting"所需的最少操作次数为3。
阅读全文