leetcode刷题
给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。
你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输入:word1 = “horse”, word2 = “ros” 输出:3 解释: horse -> rorse (将 ‘h’ 替换为 ‘r’) rorse -> rose (删除 ‘r’) rose -> ros (删除 ‘e’)
解题思路:动态规划dp,无非是4种情况, (1)当最后一个字符相等时,就是看前边的dp[i-1][j-1]和dp[i][j]最小值 (2)否则的话,dp[i-1][j]和dp[i][j-1]和dp[i-1][j-1]找最小值即可。 注意事项: 1.当dp[]中为0设置一位的时候,涉及到nums[i]中的数值时,一定要记得-1!!!!! 2.什么时候为0多加一位呢?需要判断,这道题,如果其中有一个字符串str1是null的话,那么转为另外一个字符串str2只需要str2的长度就可以了,这个时候是需要考虑0 的,所以为0添加了一位int[][] dp = new int[len1+1][len2+1]