门头沟建设委员会官方网站百中搜优化软件靠谱吗
583. 两个字符串的删除操作
力扣题目链接(opens new window)
给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。
示例:
- 输入: "sea", "eat"
- 输出: 2
- 解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"
思路:计算两个字符串公共子串的个数,然后用两个字符串的长度分别减去公共子串的长度再求和,就是剩下需要删除的字符
class Solution(object):def minDistance(self, word1, word2):""":type word1: str:type word2: str:rtype: int"""dp = [[0]*(len(word2)+1) for _ in range(len(word1)+1)]for i in range(1, len(word1)+1):for j in range(1, len(word2)+1):if word1[i-1] == word2[j-1]:dp[i][j] = dp[i-1][j-1] + 1else:dp[i][j] = max(dp[i-1][j], dp[i][j-1])return len(word1)+len(word2)-dp[-1][-1]*2