题解 | #编辑距离(一)#

编辑距离(一)

https://www.nowcoder.com/practice/6a1483b5be1547b1acd7940f867be0da

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
class Solution:
    def editDistance(self , str1: str, str2: str) -> int:
        # write code here
        m = len(str1)
        n = len(str2)

        if m * n == 0:
            return m+n
        
        # 构造[m+][n+1]维数组储存数据
        dp = [[0]*(n+1) for _ in range(m+1)]

        # 初始状态赋值
        for i in range(m+1):
            dp[i][0] = i
        for j in range(n+1):
            dp[0][j] = j

        for i in range(1,m+1):
            for j in range(1,n+1):
                left = dp[i][j-1] + 1  # 对str2删除
                up = dp[i-1][j] + 1    # 对str1删除
                left_up = dp[i-1][j-1] + 1  # 进行替换

                # 如果对应字符串相等,注意str对应的下标需减1
                if str1[i-1]==str2[j-1]:  
                    left_up = left_up - 1
                
                dp[i][j]=min(left,up,left_up)
        
        return dp[m][n]

全部评论

相关推荐

totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
10-10 17:54
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务