随想录算法训练营第五十五天|583.两个字符串的删除操作、72.编辑距离

583.两个字符串的删除操作

cs 复制代码
public class Solution {
    public int MinDistance(string word1, string word2) {
        char[]w1=word1.ToCharArray();
        char[]w2=word2.ToCharArray();
        int[,]dp=new int[w1.Length+1,w2.Length+1];
        for(int i=1;i<=w1.Length;i++)
        {
            for(int j=1;j<=w2.Length;j++)
            {
                if(w1[i-1]==w2[j-1])
                {
                    dp[i,j]=dp[i-1,j-1]+1;
                }else
                dp[i,j]=Math.Max(dp[i-1,j],dp[i,j-1]);
            }
        }
        return word1.Length-dp[w1.Length,w2.Length]+word2.Length-dp[w1.Length,w2.Length];
    }
}

代码和最长公共子串一个思路,只是最后返回值要处理一下。

72.编辑距离

cs 复制代码
public class Solution {
    public int MinDistance(string word1, string word2) {
        char[]w1=word1.ToCharArray();
        char[]w2=word2.ToCharArray();
        int[,]dp=new int[w1.Length+1,w2.Length+1];
        for(int i=1;i<=w1.Length;i++)
        {
            dp[i,0]=i;
        }
        for(int j=1;j<=w2.Length;j++)
        {
            dp[0,j]=j;
        }
        for(int i=1;i<=w1.Length;i++)
        {
            for(int j=1;j<=w2.Length;j++)
            {
                if(w1[i-1]==w2[j-1])
                {
                    dp[i,j]=dp[i-1,j-1];
                }else
                dp[i,j]=Math.Min(Math.Min(dp[i-1,j-1],dp[i,j-1]),dp[i-1,j])+1;
            }
        }
        return dp[w1.Length,w2.Length];
    }
}

Word1删除一个元素就是Dp[i][j] = Dp[i - 1][j] + 1,Word2删除Dp[i][j] = Dp[i][j - 1] + 1,替换则是Dp[i][j] = dp[i - 1][j - 1] + 1。

相关推荐
FPGA_无线通信几秒前
OFDM 精频偏补偿
算法·fpga开发
FMRbpm1 分钟前
栈练习--------从链表中移除节点(LeetCode 2487)
数据结构·c++·leetcode·链表·新手入门
程序员-King.3 分钟前
day109—同向双指针(字符串)—每个字符最多出现两次的最长子字符串(LeetCode-3090)
算法·leetcode·双指针
青山的青衫3 分钟前
【单调栈和单调队列】LeetCode hot100+面试高频
算法·leetcode·面试
俊俊谢11 分钟前
【浮点运算性能优化】浮点转定点算法库的多平台通用移植方案与性能评估优化
算法·性能优化·c·浮点转定点·多平台移植
电饭叔13 分钟前
Luhn算法与信用卡识别完善《python语言程序设计》2018版--第8章14题利用字符串输入作为一个信用卡号之三
android·python·算法
曹牧13 分钟前
C#:Dictionary类型数组
java·开发语言·c#
bbq粉刷匠17 分钟前
力扣-电话号码组合
java·算法
狗头实习生26 分钟前
电话号码字母组合
java·算法·leetcode
C雨后彩虹33 分钟前
矩阵扩散问题
java·数据结构·算法·华为·面试