583. Delete Operation for Two Strings
阿新 • • 發佈:2020-07-28
Given two wordsword1andword2, find the minimum number of steps required to makeword1andword2the same, where in each step you can delete one character in either string.
Example 1:
Input: "sea", "eat" Output: 2 Explanation: You need one step to make "sea" to "ea" and another step to make "eat" to "ea".
Note:
- The length of given words won't exceed 500.
- Characters in given words can only be lower-case letters.
class Solution { public int minDistance(String word1, String word2) { int l1 = word1.length(), l2 = word2.length(); int[][] dp = new int[l1 + 1][l2 + 1];for(int i = 1; i <= l1; i++) { for(int j = 1; j <= l2; j++) { if(word1.charAt(i - 1) == word2.charAt(j - 1)) dp[i][j] = dp[i - 1][j - 1] + 1; else dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]); } } return l1 + l2 - 2 * dp[l1][l2]; } }
你品,你細細品,這tmd不就是求LCS嗎?求最大公共子序列,然後l1 + l2 - 2*dp[l1][l2]即可