583. Delete Operation for Two Strings
583. Delete Operation for Two Strings
兩個單字需要刪掉的字元,恰好是他們沒有重疊的字元,他們沒有重疊的字元,所以找出兩個字元的最長公共子字串,分別刪掉後,剩下的字元就是最少的刪除操作了。
class Solution:
def longestCommonSubsequence(self, word1: str, word2: str) -> int:
@lru_cache(None)
def helper(i, j):
if i == len(word1) or j == len(word2):
return 0
if word1[i] == word2[j]:
return 1 + helper(i+1, j+1)
else:
return max(helper(i+1, j), helper(i, j+1))
return helper(0, 0)
def minDistance(self, word1: str, word2: str) -> int:
lcs = self.longestCommonSubsequence(word1, word2)
return len(word1) + len(word2) - 2 * lcs