使用Java语言,直接递归法实现编辑距离问题
时间: 2024-05-11 19:15:44 浏览: 90
编辑距离-java语言实现
编辑距离问题指的是将一个字符串通过删除、插入、替换等操作,转换成另一个字符串所需的最小步数。直接递归法实现编辑距离问题,可以参考以下Java代码:
```
public static int editDistance(String word1, String word2) {
int len1 = word1.length(), len2 = word2.length();
if (len1 == 0) return len2;
if (len2 == 0) return len1;
if (word1.charAt(len1 - 1) == word2.charAt(len2 - 1)) {
return editDistance(word1.substring(0, len1 - 1), word2.substring(0, len2 - 1));
} else {
int d1 = editDistance(word1.substring(0, len1 - 1), word2);
int d2 = editDistance(word1, word2.substring(0, len2 - 1));
int d3 = editDistance(word1.substring(0, len1 - 1), word2.substring(0, len2 - 1));
return Math.min(Math.min(d1, d2), d3) + 1;
}
}
```
这段代码中,首先判断两个字符串的长度是否为0。若两个字符串之一为空,编辑距离即为另一个字符串的长度。
接着,判断两个字符串的最后一个字符是否相同。若相同,则不需要进行操作,直接递归。
若不相同,则有三种操作方式:删除word1的最后一个字符,插入word2的最后一个字符,或将word1的最后一个字符替换为word2的最后一个字符。分别递归计算这三种操作方式后的最小编辑距离,再取其中的最小值加上一即为所求。
阅读全文