所以我的任务是打印出编辑距离的二维数组的操作。它实际上适用于少数情况但不适用于所有情况。就我而言,从baacda转变---> abace在其索引为i = 0且j = 1的最后一次操作时停止。
这是我的print方法,它从右下角循环遍历数组
while(i > 0 && j> 0)
{
if(temp[i-1][j-1] <= temp[i-1][j] && temp[i-1][j-1] <= temp[i][j-1]) {
if (temp [i-1][j-1] == value ||temp[i - 1][j - 1] == value - 1) {
if (temp[i - 1][j - 1] == value - 1) {
tempString.setCharAt(i - 1, b.charAt(j - 1));
System.out.println("cost 1 substitute " + a.charAt(i - 1) + " mit " + b.charAt(j - 1) + " " + tempString);
i--;
j--;
value = temp[i][j];
} else {
System.out.println("cost 0 no edit ");
i--;
j--;
value = temp[i][j];
}
}
}
else if(temp[i][j-1] < temp[i-1][j])
{
if(temp[i][j-1] == value || temp[i][j-1] == value-1 )
{
tempString.insert(i, b.charAt(j - 1));
System.out.println("cost 1 insert " + b.charAt(j - 1) + " nach dem " + a.charAt(i - 1) + " ein " + tempString);
j--;
value = temp[i][j];
}
}else
{
tempString.deleteCharAt(i-1);
System.out.println("cost 1 delete " + a.charAt(i-1) + " " + tempString);
i--;
value = temp[i][j];
}
}
}
希望有人能帮助我:)