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

计算字符串的编辑距离

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

# 思路:
# 对于两个单字符a,b,考虑是否相同:
# 1.相同,则不需要改变,编辑距离为0
# 2.不相同,需要改变。方法是替换,编辑距离为1
# 对于两个字符串a,b,考虑切片a[:i]段,b[:j]段是否相同。先看末位
# 1.相同 不需要改变。编辑距离应等同于都去掉该位的字符串a[:i],b[:j]的编辑距离,记为dp[i][j] = dp[i-1][j-1]
# 2.不相同 需要改变此位。要使a[i]==b[j],可以:
# 2.1替换a[i]为b[j],之后需要将a[:i-1]段转换为b[:j-1]段,故编辑距离为dp[i-1][j-1]+1
# 2.2删除a[i],之后需要将a[:i-1]段转换为b[:j]段,故编辑距离为dp[i-1][j]+1
# 2.3添加b[j]在a[i]之后,之后需要将a[:i]段转换为b[:j-1]段,故编辑距离为dp[i][j-1]+1
# 上述操作后即可实现a[:i]段==b[:j]。a[:i]段转换为b[:j]的最小次数也应当是上述式子的最小值


text1 = input()
text2 = input()

dp = [[0 for j in range(len(text2)+1)] for i in range(len(text1)+1)]

# 构建dp
for i in range(1,len(text1)+1):
    dp[i][0] = i
for j in range(1,len(text2)+1):
    dp[0][j] = j
# 设置初值
# for tmp in dp:
#     print(tmp)

# dp
for i in range(1,len(text1)+1):
    for j in range(1, len(text2)+1):
        if text1[i-1] == text2[j-1]:
            dp[i][j] = dp[i-1][j-1]
        else:
            dp[i][j] = min(dp[i-1][j-1]+1, dp[i-1][j]+1, dp[i][j-1]+1)

print(dp[len(text1)][len(text2)])




全部评论

相关推荐

认真搞学习:这个真喷不了,你是我见过最美的牛客女孩
点赞 评论 收藏
分享
繁华的街道两旁,湿漉漉的下午,两个青涩的脸庞互相张望。宽大卫衣下娇小的她,向我奔来。不约而同的卫衣,斯文的半框眼镜掩饰着一个穷臭屌丝气息。这是我和我牛爱网第一死忠粉兼专属女嘉宾最初的见面。火速恋爱,但是没有所谓的快节奏,相识半年,还是一样的热恋。吃着肉夹馍坐过西安的小三轮洱海边自行车的气球胖吃着她最喜欢的酸酸水果和小乳扇在南山某店爷爷穿孙子衣服,摸肥猫就算我在忙也要抽出时间陪她去吃他喜欢的漂亮饭生活总是平凡,但平凡不平淡还记得见面第一件事儿:“我去上个厕所。”现在早上第一件事儿:“拉*”第一次上我车的她:“我可以坐副驾吗?”现在的她:“老子把jio翘到上面得得挡到你后视镜。”这小孩,虽然花了我...
Stan_蹒跚者:确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务