题解 | 编辑距离(一) 改正解题官思路

编辑距离(一)

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

解题官的解法思路很好,但是如果两个字符串长度不一,但是最后一位字符相同的情况下,输出的结果错误。

如果两个字符串长度不同,可以考虑直接省略不同长度的字符串比较,直接比较相同长度下的字符,然后加上长度差(增加或删减)。

Python 优化后的代码如下,

class Solution:
    def editDistance(self , str1: str, str2: str) -> int:
        n = min(len(str1),len(str2)) # 以二者最短长度为n
        d = abs(len(str1)-len(str2)) # 计算二者的差值

        dp = [[0] * (n+1) for i in range(n+1)]

        for i in range(1, n+1): 
            dp[i][0] = dp[i - 1][0] + 1
            dp[0][i] = dp[0][i - 1] + 1

        for i in range(1, n+1): 
            for j in range(1, n+1): 
                if str1[i - 1] == str2[j - 1]: 
                    dp[i][j] = dp[i - 1][j - 1] 
                else:
                    dp[i][j] = min(dp[i - 1][j - 1], min(dp[i - 1][j], dp[i][j - 1])) + 1 
        return dp[n][n] + d

全部评论

相关推荐

kzn_ye:看成被正职干了半年,我还以为。。。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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