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

计算字符串的编辑距离

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

def main():
    A = input()
    B = input()
    m = len(A)
    n = len(B)
    dp = [[1 for i in range(n + 1)] for j in range(m + 1)]
    for i in range(n + 1):
        dp[0][i] = i
    for j in range(m + 1):
        dp[j][0] = j
    # 构造二维动态规划矩阵,设置
    """
    m\n [[0, 1, 2, 3, 4, 5, 6],
         [1, 1, 1, 1, 1, 1, 1],
         [2, 1, 1, 1, 1, 1, 1],
         [3, 1, 1, 1, 1, 1, 1],
         [4, 1, 1, 1, 1, 1, 1],
         [5, 1, 1, 1, 1, 1, 1],
         [6, 1, 1, 1, 1, 1, 1],
         [7, 1, 1, 1, 1, 1, 1]]
    """
    for i in range(1, m + 1):
        for j in range(1, n + 1):
            """
            i-1,j-1  i-1, j
                    \    |
            i, j-1 -  i, j
            
            """
            if A[i - 1] == B[j - 1]:  # 如果两个字符串相同,直接取dp[i-1][j-1]的值
                dp[i][j] = dp[i - 1][j - 1]
            else:  # 如果不相同,则取之前三个方向的最小值并加1
                dp[i][j] = min(dp[i - 1][j - 1], dp[i][j - 1], dp[i - 1][j]) + 1
    print(dp[m][n])


while True:
    try:
        main()
    except:
        break

全部评论

相关推荐

08-07 11:47
门头沟学院 Java
快手你的进度好快啊,可是我感觉我还没做好准备8.4投递8.7hr初筛-用人部门筛选
瞒着老板找实习:2号投敌 4号约面 今天一面已挂 哈哈
投递快手等公司10个岗位
点赞 评论 收藏
分享
嗨害嗨我来了:感谢我吧,上次我在食堂敲打了一个姓雷的,他说马上给大学生们准备hc
不卡学历的大厂有哪些?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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