编辑距离打印输出操作

时间:2018-06-03 22:12:16

标签: distance edit levenshtein-distance

所以我的任务是打印出编辑距离的二维数组的操作。它实际上适用于少数情况但不适用于所有情况。就我而言,从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];

    }
}

}

希望有人能帮助我:)

0 个答案:

没有答案