注意的点:
1、边界条件需要限定到:j+1 or : i+1
解法:动态规划
class Solution:
def minDistance(self, word1: str, word2: str) -> int:
if not word1 or not word2: return len(word1) + len(word2)
@cache
def dp(i, j):
if i == 0: return j + 1 - int(word1[0] in word2[: j+1])
if j == 0: return i + 1 - int(word2[0] in word1[: i+1])
if word1[i] == word2[j]: return dp(i-1, j-1)
else: return min(dp(i-1, j-1), dp(i, j-1), dp(i-1, j)) + 1 # 对应了三类操作
return dp(len(word1) - 1, len(word2) - 1)