LeetCode 72
这个题目有个冗余条件,增加一个字符和删除一个字符其实是一样的,只是作用在不同的字符串上而已。
那么剩下的就是替换或者是删除。没有想到非常好的方法,那么就考虑把每种都尝试一下,取最小的结果。
def minDistance(self, word1: str, word2: str) -> int:
memo = collections.defaultdict(int)
def minDistanceHelper(w1:str, w2:str, memo)->int:
if len(w1) == 0: return len(w2)
if len(w2) == 0: return len(w1)
if (w1,w2) in memo:
return memo[(w1,w2)]
if w1[0] == w2[0]:
result = minDistanceHelper(w1[1::], w2[1::], memo)
memo[(w1,w2)] = result
return result
d1 = minDistanceHelper(w1[1::], w2, memo) + 1
d2 = minDistanceHelper(w1, w2[1::], memo) + 1
r1 = minDistanceHelper(w1[1::], w2[1::], memo) + 1
result = min(d1, d2, r1)
memo[(w1,w2)] = result
return result
return minDistanceHelper(word1, word2, memo)