zoukankan      html  css  js  c++  java
  • 最小编辑距离

    DP操作建模

    dp[i][j]代表字符串word1[0...i-1]与word2[0...j-1]的最小编辑距离。

    对于编辑距离的三个操作来说:
    插入举例:X:=ex  VS Y:=exp
    前面的两个ex都是相同,则编辑距离不变为0,X没有第三个字符,这里如果我们插入了一个字符即可。dp[i][j]=dp[i][j-1]+1;
     
    删除举例: X:= exp VS Y:= ex
    我故意用了这个例子,也就是说插入和删除是互逆的,就是看我们以谁为对象来看待这个问题。dp[i][j]=dp[i-1][j]+1;
     
    替代举例: X:= sitten VS Y:=sitting
    这里例子的第五个字符需要替代,为什么要替代呢? 因为第四个字符和第六个字符相同(这里就需要用DP,也就是说,需要一个空间来记录之前的比较结果和之后的比较结果)。
    class Solution {
    public:
        int minDistance(string word1, string word2) {
            int size1 = word1.size(), size2 = word2.size();
            vector<vector<int>> dp(size1 + 1, vector<int>(size2 + 1, 0));
            for (int i = 0; i <= size1; i++) dp[i][0] = i;
            for (int j = 0; j <= size2; j++) dp[0][j] = j;
            for (int i = 1; i <= size1; i++) {
                for (int j = 1; j <= size2; j++) {
                    int replace = word1[i - 1] == word2[j - 1] ? dp[i - 1][j - 1] : dp[i - 1][j - 1] + 1;
                    int ins_del = min(dp[i][j - 1], dp[i - 1][j]) + 1;
                    dp[i][j] = min(replace, ins_del);
                }
            }
            return dp.back().back();
    
        }
    };
  • 相关阅读:
    pta建立与遍历二叉树
    Pikachu-SSRF(服务器端请求伪造)
    Pikachu-Sql Inject(SQL注入)
    Pikachu-RCE(远程命令/代码执行漏洞)
    Pikachu-php反序列化
    Pikachu-over permission(越权操作)
    Pikachu-File Inclusion(文件包含漏洞)
    Pikachu-CSRF(跨站请求伪造)
    CMS-熊海网站内容管理系统漏洞测试
    DVWA-命令执行
  • 原文地址:https://www.cnblogs.com/inception6-lxc/p/9354850.html
Copyright © 2011-2022 走看看