【发布时间】:2019-02-13 18:38:20
【问题描述】:
我从互联网上看到了很多资源,但找不到确切的帮助。我试图找出两个字符串示例之间的编辑距离: String a = "把回车放在段落之间 gioo"; String b = "在电话 gio 之间打个招呼"; 在这里,我总是将字符串 a 与另一个字符串进行比较,所以这里的编辑距离应该是 4。 我已经完成了一些代码执行,它将我与字符串中的每个字符进行了比较。
int len1 = row10.length();
int len2 = row01.length();
int[][] dp = new int[len1 + 1][len2 + 1];
for (int i = 0; i <= len1; i++) {
dp[i][0] = i;
}
for (int j = 0; j <= len2; j++) {
dp[0][j] = j;
}
for (int i = 0; i < len1; i++) {
char c1 = row10.charAt(i);
for (int j = 0; j < len2; j++) {
char c2 = row01.charAt(j);
if (c1 == c2) {
dp[i + 1][j + 1] = dp[i][j];
} else {
int replace = dp[i][j] + 1;
int insert = dp[i][j + 1] + 1;
int delete = dp[i + 1][j] + 1;
int min = replace > insert ? insert : replace;
min = delete > min ? min : delete;
dp[i + 1][j + 1] = min;
}
}
}
System.out.println(dp[len1][len2]);
【问题讨论】:
-
但问题是什么?
-
我发布的程序是比较两个字符串的完整编辑距离,我只想要单词。例如:字符串 a = "hello elina",字符串 b = "hello gordon"。我只需要 1 个编辑,但程序给我 7 个空格。我只需要没有空格的单词的编辑距离。
-
我正在使用 excel 表格列输入它有大量数据,所以我不能将所有空格都放入空字符串
-
解决方案的基本概述是使用
split将每个输入划分为一个单词数组,然后以与现有逻辑遍历字符完全相同的方式遍历这些单词,但使用String类的equals方法而不是==来比较它们。 -
@Juke,所以你想计算第一次不匹配之前的单词数?例如。
Sent 1 = My name is XYZ. & Sent 2 = My name ABC。那么输出应该是 2。我猜对了吗?