Problem
Given two strings word1
and word2
, return the minimum number of steps required to make word1
and word2
the same.
In one step, you can delete exactly one character in either string.
Example 1:
1 | Input: word1 = "sea", word2 = "eat" |
Example 2:
1 | Input: word1 = "leetcode", word2 = "etco" |
Constraints:
1 <= word1.length, word2.length <= 500
word1
andword2
consist of only lowercase English letters.
Analysis
题目给出两个字符串,问通过多少个删除操作能够使得两个字符串相等。其实它就是最长公共子序列反着问,只需要计算出最长公共子序列的长度,就能知道需要多少个删除操作。
为什么呢?思考一下如果两个字符串没有相同的字符,假设分别是abc
和def
,此时你需要把它们都删干净才行,所以是两者的长度相加。而如果它们有一个字符相同,如abc
和aef
,则需要删除的数量是4。所以计算的方法是两者长度之和 - 2 * 最长公共子序列长度
。
最长公共子序列的长度计算就是简单的dp,这里不详细讨论。
Solution
无。
Code
1 | /** |
Summary
这道题目本质上就是最长公共子序列,思路就是dp,然后用这个结果再去计算出删除操作的次数。这道题目的分享到这里,感谢你的支持!