两个字符串的删除操作
给定两个单词 word1 和 word2 ,返回使得 word1 和  word2 相同所需的最小步数。
每步 可以删除任意一个字符串中的一个字符。
示例 1:
输入: word1 = “sea”, word2 = “eat”
输出: 2
解释: 第一步将 “sea” 变为 “ea” ,第二步将 "eat "变为 “ea”
示例  2:
输入:word1 = “leetcode”, word2 = “etco”
输出:4
提示:
1 <= word1.length, word2.length <= 500
word1 和 word2 只包含小写英文字母
题解
集合:dp[i][j]dp[i][j]dp[i][j]为 word1[下标从1到i]==word2[下标从1到j]word1[下标从1到i]==word2[下标从1到j]word1[下标从1到i]==word2[下标从1到j] 所需要的最小步数
集合的划分:word1[i]和word2[j]是否在相同的字符串中
四种情况:
dp[i][j]=min(dp[i−1][j−1]+2,dp[i−1][j]+1,dp[i][j+1]+1,dp[i−1][j−1])dp[i][j] = min(dp[i-1][j-1]+2,dp[i-1][j]+1,dp[i][j+1]+1,dp[i-1][j-1])dp[i][j]=min(dp[i−1][j−1]+2,dp[i−1][j]+1,dp[i][j+1]+1,dp[i−1][j−1])
如果word1[i]==word2[j]那么一定都在其中:  dp[i−1][j−1]dp[i-1][j-1]dp[i−1][j−1] 这一种
如果不相等那么考虑: dp[i−1][j−1]+2,dp[i−1][j]+1,dp[i][j+1]+1dp[i-1][j-1]+2,dp[i-1][j]+1,dp[i][j+1]+1dp[i−1][j−1]+2,dp[i−1][j]+1,dp[i][j+1]+1 这三种
class Solution {
    public int minDistance(String word1, String word2) {
        int n = word1.length();
        int m = word2.length();
        int dp[][] = new int[n+1][m+1];
        for(int i=0; i<=n; ++i) Arrays.fill(dp[i],0);
        for(int i=0; i<=n; ++i){
            dp[i][0] = i;
        }
        for(int i=0; i<=m; ++i){
            dp[0][i] = i;
        }
        
        for(int i=1; i<=n; ++i){
            for(int j=1; j<=m; ++j){
                if(word1.charAt(i-1)==word2.charAt(j-1)){
                    dp[i][j] = dp[i-1][j-1];
                }
                else{
                    dp[i][j] = Math.min(dp[i-1][j]+1,Math.min(dp[i][j-1]+1,dp[i-1][j-1]+2));
                }
            }
        }
        return dp[n][m];
    }
}
 
                   
                   
                   
                   
                            
 
                             给定两个单词,如'sea'和'eat',求它们通过单次删除操作变为相同所需的最小步骤数。例如,'sea'变到'eat'需要两步。此问题采用动态规划解决,创建一个二维数组dp,记录对应位置字符相同和不同的情况,最终返回dp数组的最后一个元素作为答案。
给定两个单词,如'sea'和'eat',求它们通过单次删除操作变为相同所需的最小步骤数。例如,'sea'变到'eat'需要两步。此问题采用动态规划解决,创建一个二维数组dp,记录对应位置字符相同和不同的情况,最终返回dp数组的最后一个元素作为答案。
           
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
                     
              
             
                   319
					319
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
					 
					 
					


 
            