题目描述:给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。你总共三种操作方法:
插入一个字符
删除一个字符
替换一个字符
样例:给出 work1="mart" 和 work2="karma",返回 3
与上一道题“不同的子序列”(详见:点击打开链接)有点类似,都是用动态规划处理两个字符串的的问题。其实我觉得大家做这种东西一定要对方法总结,因为这些东西他都不是很复杂的算法,之所以一开始不会,就是因为没见过,没思路,但是做过类似的东西,再碰到时,就要尝试用之前总结到的东西。
好了,不说废话了。看题,还是通过动态规划建立二维表格,我们记为record吧,record[i][j]表示word1的前 i 项变换成word2的前 j 项所需要的步骤,因为只有3种操作方式,所以我们一一分析一下:
1. 添加:试想,如果word1的前 i 项现在已经变换到word2的前 j - 1 项了,那显然只需要再一步,就是添加字符word2[j]就能变成word2的前 j 项,用状态转移方程来说,record[i][j] = record[i][j - 1] + 1
2. 删除:试想,如果word1的前 i - 1 项现在已经变换到word2的前 j 项了,那么想要word1的前 i 项变换到word2的