如何在“edit_distance_problem”中重建字符串?

时间:2013-09-29 10:58:56

标签: string dynamic-programming edit-distance

假设您已为字符串X =“AGGGCT”和字符串Y =“AGGCA”提供了dp表

m = X + 1的长度

n = Y + 1的长度

            0 1 2 3 4 5
            1 0 1 2 3 4
            2 1 0 1 2 3
dp[m][n] =  3 2 1 0 1 2
            4 3 2 1 1 2
            5 4 3 2 1 2
            6 5 4 3 2 2

并且您想要重建三个字符串,如下所示

string row1 = "AGGGCT" ;
string row2 = "||| | " ;
string row3 = "AGG-CA" ;

如果可能在C / C ++ / Java中发布代码,如何重构字符串row1,row2和row3。

1 个答案:

答案 0 :(得分:0)

我认为此页面可以作为一个很好的起点:

http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#Java

你必须做一些修改,但核心思想应该是存储在“min”中,为给定的(i,j)选择哪个案例,并且在返回之前你可以向后遍历矩阵距离[str1.length()] [str2.length()]一步一步。如果在步骤中距离相同,则显示|,如果它们不同但是踩到对角线那么它是一个改变步骤,否则如果垂直/水平移动/添加。 您可以将此“向后”信息存储在字符串中,然后以相反的顺序显示它。