题解 | #最小编辑代价#

最小编辑代价

http://www.nowcoder.com/practice/05fed41805ae4394ab6607d0d745c8e4

动态规划做法

之前做过类似的题目,那个题目中插入、删除、替换的代价都是相同的,都是1,在这个题目里面是不同的。

理解的时候需要注意,是要由str1变成str2。变化情况分三种,对str1进行插入,对str1进行删除,对str1进行替换。
dp数组的i行j列代表str1的前i个字符编辑成str2的前j个字符的最小代价。
假设str1的第i个字符和str2的第j个字符匹配,dp[i][j]=dp[i-1][j-1],因为str1的前i-1个字符已经和str2的前j-1个字符相同了。
当str1的第i个字符和str2的第j个字符不匹配时,三种选择,对str1的字符进行1)删除、2)插入、与3)替换,这些操作都是发生在str1上。
1)删除。将str1的第i个字符删除,删除这一个字符,那怎么让str1变成str2啊?这时我们就寄希望于str1的前i-1个字符和str2的前j个字符相同了,将str1的前i-1个字符变成str2的前j个字符的代价已经求出了,就是dp[i-1][j],所以删除str1的第i个字符,str1的前i个字符还能和str2的前j个字符相同的代价就是dp[i-1][j]+dc。
2)插入。在str1的第i个位置后进行插入,使得str1的前i个字符和str2的前j个字符相同,那得要求str1的前i个字符和str2的前j-1个字符相同啊,这时候再进行插入,也就是将str2的第j个字符插入到str1的第i个字符之后。此时编辑代价为dp[i][j-1]+ic。
3)替换。替换好解释,就是str1的前i-1个字符变成str2的前j个字符的代价,加上将str1的第i个字符替换为str2的第j个字符的代价。dp[i-1][j-1]+rc。

class Solution:
    def minEditCost(self , str1 , str2 , ic , dc , rc ):
        m,n=len(str1),len(str2)
        dp=[[0]*(n+1) for _ in range(m+1)]
        for i in range(m+1):
            dp[i][0]=i*dc
        for j in range(n+1):
            dp[0][j]=j*ic
        for i in range(1,m+1):
            for j in range(1,n+1):
                cost = 0 if str1[i-1]==str2[j-1] else rc
                dp[i][j]=min(dp[i-1][j]+dc,dp[i][j-1]+ic,dp[i-1][j-1]+cost)
        return dp[m][n]
全部评论

相关推荐

头像
04-27 15:11
已编辑
华东师范大学 算法工程师
暑期实习从2月开始投,面了两个月,流程该挂的都挂完了,腾讯字节一共号称是1.7w个hc,不知道都发给谁了,估计今年秋招要难顶。Timeline米哈游、美团、蚂蚁、微软等公司直接简历挂穿,没进面。携程:3.3 投递、测评3.12 笔试3.18 一面3.25 二面4.13 ai面(hr面)4.14 英语测评4.23 offer(已拒)腾讯:2.6 测评2.28 wxg一面3.5 wxg二面(挂)3.11 teg一面3.21 teg二面(取消)3.31 teg一面4.10 teg二面(挂)4.21 wxg一面4.24 wxg二面(挂)字节:1.28 aml约面(取消)3.17 火山一面(挂)4.8 aml一面(挂)4.20 抖音data一面(挂)阿里:3.23 投递、测评3.28 笔试3.31 淘天一面4.8 钉钉一面4.9 淘天二面4.10 阿里控股一面4.12 钉钉二面(取消)4.15 淘天hr面4.16 淘天offer(已接)4.21 高德一面(取消)4.22 淘宝闪购一面(取消)面试最大的感触是,现在撞上ai转型,一堆老业务急着转向,新业务非常不成熟,研究型的组bar非常高根本进不去,业务侧挂着算法的岗位干的都是工程活,面试却又要问算法,另外agent的落地也远没有那么广,绝大多数还是那套写死的系统调一下llm api或者做做rag,其余少部分真的在搭agent的,基本不能在线上服务用什么很智能的模型,现阶段成本太高,进去大概率就是给垃圾模型从工程方面兜底,除了业务场景的应用和数据经验以外,技术方面很难有什么提升。算法岗做不了基模的还是去搜广推好,之前判断失误了完全没投,秋招不知道还进不进得去。
嵌入式的小白:不错啊,淘天也是挺好的,恭喜
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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