• leetcode72. 编辑距离


    题目来源:leetcode72. 编辑距离

    题目描述:

    给你两个单词 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')

    解题思路:

    动态规划

    class Solution {
    public:
        int minDistance(string word1, string word2) {
            int m=word1.size();
            int n=word2.size();
            vector<vector<int>> dp(m+1,vector<int>(n+1,0));
            int i,j;
            for(i=0;i<=m;i++)
                dp[i][0]=i;
            for(j=0;j<=n;j++)
                dp[0][j]=j;
            for(i=1;i<=m;i++)
                for(j=1;j<=n;j++){
                    if(word1[i-1]==word2[j-1])
                        dp[i][j]=dp[i-1][j-1];
                    else
                    {
                        int m=dp[i-1][j]+1;//删除元素
                        int n=dp[i][j-1]+1;//插入元素
                        int k=dp[i-1][j-1]+1;//替换元素
                        dp[i][j]=min(min(m,n),k);
                    }
                }
            return dp[m][n];
        }
    };
    
  • 相关阅读:
    5js
    4js
    3js
    2js
    1js
    7css
    6css
    5css
    Django高级项目实战-开发企业级问答网站,学Django就这了
    Java日志第27天 2020.8.1
  • 原文地址:https://www.cnblogs.com/yjcoding/p/13217074.html
Copyright © 2020-2023  润新知