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

计算字符串的编辑距离

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

#原理搞懂了,其实很简单哈。使用动态规划自底向上
#1.比较当前字符不相等时,可通过左边添加一个字符、右上角时为替换当前字符、上边字符
#为删除一个字符。此处不懂结合图表想想,想通很简单哈。
#状态转移方程为:dp[i][j] = min(dp[i][j-1]+1,dp[i-1][j-1]+1,dp[i-1][j]+1)
#2.解决此类问题需:
    #a.先绘制二维列表用于记录状态转移值,本质用空间换时间;
    #b.再找出状态转移方程,动态更新二维列表;
def ls(a,b):
    dp = [[0 for i in range(len(a)+1)] for j in range(len(b)+1)]
    for i in range(len(a)+1):
        dp[0][i] = i
    for j in range(len(b)+1):
        dp[j][0] = j
    #状态转移方程:左边添加一个字符,左上角是替换当前字符,上面的是删除当前字符
    for i in range(1,len(b)+1):
        for j in range(1,len(a)+1):
            if b[i-1] != a[j-1]:
                dp[i][j] = min(dp[i][j-1]+1,dp[i-1][j-1]+1,dp[i-1][j]+1)
            else:
                dp[i][j] = dp[i-1][j-1]

    return dp

a = input()
b = input()
dp = ls(a,b)
print(dp[len(b)][len(a)])

#动态规划##华为机试#
全部评论

相关推荐

06-27 18:45
中山大学 Ruby
25届应届毕业生,来广州2个礼拜了,找不到工作,绝望了,太难过了…
应届想染班味:9爷找不到工作只能说明,太摆了或者太挑了。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-27 14:11
很喜欢小米的新车,校招薪资每月22k,攒多久能买?
测试糕手手:别看工资,先看现金流存款。有50W存款以上再考虑,车是消耗品,选适合自己的重要。你有钱就当我没说过
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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