码迷,mamicode.com
首页 > 其他好文 > 详细

刷题72. Edit Distance

时间:2020-02-21 09:45:02      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:难度   iss   不难   src   public   turn   c++   转换   har   

一、题目说明

题目72. Edit Distance,计算将word1转换为word2最少需要的操作。操作包含:插入一个字符,删除一个字符,替换一个字符。本题难度为Hard!

二、我的解答

这个题目一点思路也没,就直接看答案了。用的还是dp算法,dp[n1+1][n2+1]中的dp[i][j]表示将word1的前i位,变为word2的前j位需要的步骤。注意第1行是空,第1列也是空。

技术图片

1.第一行中,dp[0][i]表示空字符""到word2[0,...,i]需要编辑几次

2.第一列中,dp[i][0]表示空字符到word2[0,...,i]需要编辑几次

3.循环计算dp的值

if(word1[i]==word2[j]){
    dp[i][j] == dp[i-1][j-1]
}else{
    dp[i][j]=min(dp[i?1][j?1],dp[i][j?1],dp[i?1][j])+1
}

有了方法,实现不难:

class Solution{
    public:
        int minDistance(string word1,string word2){
            int n1 = word1.size(),n2= word2.size();
            if(n1<=0) return n2;
            if(n2<=0) return n1;
            vector<vector<int>> dp(n1+1,vector<int>(n2+1,0)); 
            //初始化第1行 
            for(int i=0;i<=n2;i++){
                dp[0][i] = i;
            }
            
            //初始化第1列 
            for(int i=0;i<=n1;i++){
                dp[i][0] = i;
            }
            
            //计算dp矩阵
//          if(word1[i]==word2[j]){
//              dp[i][j] == dp[i-1][j-1]
//          }else{
//              dp[i][j]=min(dp[i-1][j-1],dp[i][j-1],dp[i-1][j])+1
//          } 
            for(int i=1;i<=n1;i++){//行 
                for(int j=1;j<=n2;j++){//列 
                    if(word1[i-1]==word2[j-1]) {
                        dp[i][j] = dp[i-1][j-1];
                    }else{
                        dp[i][j] = min(min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])+1;
                    }
                } 
            }
            return dp[n1][n2];
        }
};

性能如下:

Runtime: 16 ms, faster than 40.38% of C++ online submissions for Edit Distance.
Memory Usage: 11.3 MB, less than 62.50% of C++ online submissions for Edit Distance.

三、优化措施

今天做这么多吧,有点晕了。明天继续!

再回头看看题目Edit Distance,我好像以前做过,不过忘记了。

刷题72. Edit Distance

标签:难度   iss   不难   src   public   turn   c++   转换   har   

原文地址:https://www.cnblogs.com/siweihz/p/12249622.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!