Given two words word1 and word2,find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)
You have the following 3 operations permitted on a word:
a) Insert a character
b) Delete a character
c) Replace a character
-
假设我们要将字符串str1变成str2
sstr1(i)是str1的子串,范围[0到i),sstr1(0)是空串
sstr2(j)是str2的子串,同上
d(i,j)表示将sstr1(i)变成sstr2(j)的编辑距离
首先d(0,t),0<=t<=str1.size()和d(k,0)是很明显的。
当我们要计算d(i,j)时,即计算sstr1(i)到sstr2(j)之间的编辑距离,
此时,设sstr1(i)情势是somestr1c;sstr2(i)形如somestr2d的话,
将somestr1变成somestr2的编辑距离已知是d(i⑴,j⑴)
将somestr1c变成somestr2的编辑距离已知是d(i,j⑴)
将somestr1变成somestr2d的编辑距离已知是d(i⑴,j)
那末利用这3个变量,就能够递推出d(i,j)了:
如果c==d,明显编辑距离和d(i⑴,j⑴)是1样的
如果c!=d,情况略微复杂1点,
在下面的实现代码中,我使用转动数组,代替了2维数组。 而且只分配了1个数组。
另外,变量dist_i1_j1 表示 d(i⑴,j⑴)
dist_i_j 表示 d(i,j)
dist_i1_j 表示d(i⑴,j)
dist_i_j1 表示d(i,j⑴)
另外,下面代码中, 其实变量
都是可以省掉的。
不过留着,可以更直观1点。
在leetcode上的实际履行时间为28ms。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。