给定两个单词 word1
和 word2
,返回使得 word1
和 word2
相同所需的最小步数。
每步 可以删除任意一个字符串中的一个字符。
解:先算出最长字串的长度,然后直接拿每个word减去最长子串的长度。
class Solution {
public int minDistance(String word1, String word2) {
int n = word1.length();
int m = word2.length();
char[] s1 = word1.toCharArray();
char[] s2 = word2.toCharArray();
int[][] dp = new int[n+1][m+1];
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
if(s1[i-1] == s2[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 n+m-2*dp[n][m];
}
}
执行用时:4 ms, 在所有 Java 提交中击败了99.83%的用户
内存消耗:42 MB, 在所有 Java 提交中击败了43.43%的用户