给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。
你可以对一个单词进行如下三种操作:
插入一个字符
删除一个字符
替换一个字符
示例 1:
示例 2:
解题思路:
编辑距离又称levenshtein距离,用来衡量两个字符串的相似度,假设俩字符串分别为word1和word2,用m[i][j]存word1[0:i],word2[0:j](左闭右开)的编辑距离,对于i,和j位置编辑距离m[i+1][j+1];
1,如果word1[i]==word2[j],则编辑距离是
A,m[i][j],word1[0:i],word2[0:j](左闭右开)的编辑距离
B,m[i][j+1]+1,word1[0:i],word2[0:j+1](左闭右开)的编辑距离
C,m[i+1][j]+1,word1[0:i+1],word2[0:j](左闭右开)的编辑距离
这3种情况下最小者
2,如果word1[i]!=word2[j],则编辑距离是
上述3个分支中,A替换为m[i][j]+1
3,由于m[i+1][j+1]用到了m[i][j+1],m[i+1][j],m[i][j],所以采用递增循环。
4,初始条件,为了便于初始化,我们这里有个优化技巧:在word1和word2之前加一个空格,则:
A,m[0][0]=0
B,m[i][0]=i
C,m[0][j]=j