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

计算字符串的编辑距离

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

import sys

s1, s2 = sys.stdin.read().strip().splitlines()

dp = [[0 for _ in range(len(s2) + 1)] for _ in range(len(s1) + 1)]
for j in range(len(s2) + 1):
    for i in range(len(s1) + 1):
        if i == 0:
            dp[i][j] = j
        elif j == 0:
            dp[i][j] = i
        else:
            dp[i][j] = (
                dp[i - 1][j - 1]
                if s1[i - 1] == s2[j - 1]
                else min(dp[i - 1][j - 1], dp[i][j - 1], dp[i - 1][j]) + 1
            )
print(dp[-1][-1])

动态规划

定义状态 dp[i][j] s1的前i个字符和s2的前j个字符的编辑距离--最少编辑操作次数

边界条件 dp[0][0] = 0    dp[0][j]=j dp[i][0] = i

状态转移方程 dp[i+1][j+1] = 1 + min{dp[i][j], dp[i+1][j], dp[i][j+1]}

全部评论

相关推荐

白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
点赞 评论 收藏
分享
哥_留个offer先:跟他说,你这个最好用c#,微软就用c#Java不适合这个项目
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务