笔趣阁 > 科幻小说 > 编程之战 > 章节目录 第二百一五章 最短编辑距离

 推荐阅读: 重生弃少归来 黎明之剑 说好的末世呢 七根凶简 民调局异闻录之勉传 学霸的黑科技系统 无限英灵神座 快穿攻略,病娇男主,宠翻天! 终极透视眼 纵横诸天的武者

编程之战 第二百一五章 最短编辑距离


    听到经理的解释,杨成联想起了一个经典问题——求字符串的最短编辑距离。
    这个所谓编辑,就是新增字符,修改字符,删除字符三种操作。
    假如有A和B两个字符串,该怎么求它们之间的距离呢?
    首先应该明确一点,这个距离是有限的。
    就算A和B再长,他们的距离不会超过A,B的长度之和。
    然后,就开始考虑如何把这个问题转换为规模较小的子问题吧!
    如果A和B的第一个字符相同,那么第一个字符我们就不管了。
    直接计算A第二个及以后字符组成的子串,和B第二个及以后字符组成的子串,它们之间的距离。
    假设A为“man”,B为“made”。
    它们第一个字符相同,那就去掉“m”,计算“an”和“ade”之间的距离。
    而如果A和B的第一个字符不相同,那么我们就分别进行6个操作来尝试。
    1.删除A第一个字符,计算A剩下的与B的距离。
    2.删除B第一个字符,计算A和B剩下的距离。
    3.修改A第一个字符,使之与B第一个字符相同,再计算A和B的距离。
    4.修改B第一个字符,使之与A第一个字符相同,再计算A和B的距离。
    5.新增A的第一个字符到B前面,再计算A和B的距离。
    6.新增B的第一个字符到A前面,再计算A和B的距离。
    这6个操作所得到的距离中,最短的加上1,就是最短编辑距离。
    根据这样的思路,很快就可以完成一个递归程序。

温馨提示:方向键左右(← →)前后翻页,上下(↑ ↓)上下滚用, 回车键:返回列表

上一章章节目录下一章