题解 | #计算字符串的编辑距离#

计算字符串的编辑距离

https://www.nowcoder.com/practice/3959837097c7413a961a135d7104c314

#include <iostream>
#include <vector>
using namespace std;

int main() {
    string s;
    string t;
    cin >> s;
    cin >> t;
    vector<vector<int>> dp(s.length() + 1, vector<int>(t.length() + 1, 0));
    for(int i = 0; i <= s.length(); i++) {
        for(int j = 0; j <= t.length(); j++) {
            if(!i || !j) {
                dp[i][j] = j + i;
                continue;
            }
            if(s[i - 1] == t[j - 1]) {
                dp[i][j] = dp[i - 1][j - 1];
                continue;
            }
            dp[i][j] = min(dp[i - 1][j], min(dp[i][j - 1], dp[i - 1][j - 1]));
            dp[i][j]++;
        }
    }
    cout << dp[s.length()][t.length()] << endl;
}

DP 问题,dp[i][j]表示s[0-i] t[0-j]相同,需要多少操作次数。

可以从dp[i - 1][j - 1] 替换一个s[i]或者t[j]获得。

可以从dp[i - 1][j] 添加一个s[i]获得。

可以从dp[i][j - 1]添加一个t[j]获得。

全部评论

相关推荐

09-29 16:59
已编辑
门头沟学院 Java
牛客96609213...:疯狂背刺,之前还明确设置截止日期,还有笔试,现在一帮人卡在复筛,他反而一边开启扩招,还给扩招的免笔试,真服了,你好歹先把复筛中的给处理了再说
投递大疆等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务