• 2. 编辑距离 O(N*M)


    给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。

    你可以对一个单词进行如下三种操作:

    插入一个字符
    删除一个字符
    替换一个字符
    示例 1:

    输入: word1 = "horse", word2 = "ros"
    输出: 3
    解释:
    horse -> rorse (将 'h' 替换为 'r')
    rorse -> rose (删除 'r')
    rose -> ros (删除 'e')
    示例 2:

    输入: word1 = "intention", word2 = "execution"
    输出: 5
    解释:
    intention -> inention (删除 't')
    inention -> enention (将 'i' 替换为 'e')
    enention -> exention (将 'n' 替换为 'x')
    exention -> exection (将 'n' 替换为 'c')
    exection -> execution (插入 'u')

    dp dp[i][j]=min{  dp[i-1][j-1]+1,  dp[i-1][j]+1,dp[i][j-1]+1 } 

                                                     替换                             删除,插入         删除,插入

    int dp[1005][1005];
    class Solution {
    public:
        int minDistance(string word1, string word2) {
            memset(dp,127/3,sizeof(dp));
            for (int i = 0; i <= word1.size(); i++) dp[i][0] = i;
            for (int i = 0; i <= word2.size(); i++) dp[0][i] = i;
            int siz1 =word1.size(),siz2 = word2.size();
            for(int i=0;i<siz1;++i){
                for(int j=0;j<siz2;++j){
                    if(word1[i]==word2[j])dp[i+1][j+1]=dp[i][j];
                    else {
                        dp[i+1][j+1]=min(dp[i][j]+1,min(dp[i][j+1]+1,dp[i+1][j]+1) );
                    }
                }
            }
            return dp[siz1][siz2];
        }
    };
    

      

     

  • 相关阅读:
    phpcms V9实现QQ登陆OAuth2.0
    PHP程序员的技术成长规划(送给迷茫的你)
    php实现冒泡排序
    php实现堆排序
    网络抓包以及进行简单数据分析
    网络编程之套接字(tcp)
    网络编程之套接字(udp)
    C语言之位运算
    linux线程及互斥锁
    嵌入式常用英文缩写及单词整理
  • 原文地址:https://www.cnblogs.com/DreamKill/p/12590533.html
Copyright © 2020-2023  润新知