给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。
你总共三种操作方法:
- 插入一个字符
- 删除一个字符
- 替换一个字符
给出 work1="mart" 和 work2="karma"
返回 3
1 class Solution: 2 """ 3 @param word1: A string 4 @param word2: A string 5 @return: The minimum number of steps. 6 """ 7 def minDistance(self, word1, word2): 8 # write your code here 9 memo = {} 10 return self.helper(word1, 0, word2, 0, memo) 11 12 def helper(self, word1, i, word2, j, memo): 13 if i == len(word1): 14 return len(word2) - j 15 if j == len(word2): 16 return len(word1) - i 17 if (i, j) in memo: 18 return memo[(i, j)] 19 20 ans = 0 21 if word1[i] == word2[j]: 22 ans = self.helper(word1, i + 1, word2, j + 1, memo) 23 else: 24 # delete word1[i] 25 # insert word2[j] before word1[i] 26 # change word1[i] into word2[j] 27 ans = 1 + self.helper(word1, i + 1, word2, j, memo) 28 ans = min(ans, 1 + self.helper(word1, i, word2, j + 1, memo)) 29 ans = min(ans, 1 + self.helper(word1, i + 1, word2, j + 1, memo)) 30 31 memo[(i, j)] = ans 32 33 return ans