zoukankan      html  css  js  c++  java
  • 字符串的编辑距离

    字符串的编辑距离也被称为Levenshtein距离(Levenshtein Distance),一般用动态规划来实现。属于经典算法。

    这里对编辑距离进行简单的分析(经典算法,所以记录一下:-))。

    我们假定函数dist(str1, str2)表示字串str1转变到字串str2的编辑距离,那么对于下面3种极端情况,我们很容易给出解答(0表示空串)。

    • dist(0, 0) = 0
    • dist(0, s) = strlen(s)
    • dist(s, 0) = strlen(s)

    对于一般的情况,dist(str1, str2)我们应该如何求解呢?

    假定我们现在正在求解dist(str1+char1, str2+char2),也就是把"str1+char1"转变成"str2+char2"。在这个转变过称中,我们要分情况讨论:

    1. str1可以直接转变成str2。这时我们只要把char1转成char2就可以了(如果char1 != char2)。
    2. str1+char1可以直接转变成str2。这时我们处理的方式是插入char2。
    3. str1可以直接转成str2+char2。这时的情况是我们需要删除char1。

    综合上面三种情况,dist(str1+char1, str2+char2)应该是三者的最小值。

    用DP来做,我们只需要开辟一个二维数组即可。matrix[i][j]表示长度为i的A串转变为长度为j的B串的编辑距离。

    实际应用题:ZJU1027(Human Gene Functions),参考解点击这里。在应用字符串编辑距离算法时,需要做一点点改变,因为该题不存在删除一个字符的操作。

  • 相关阅读:
    Qt学习之路(33): 国际化(上)
    Qt学习之路(34): 国际化(下)
    QT中文乱码与国际化支持
    MAKEINTRESOURCE
    Qt 资源系统
    用QT在Windows下编写dll程序
    MessageBox
    ADF(自动输稿器)概述
    Visio Studio中的resource.h文件.rc资源
    求正约数个数
  • 原文地址:https://www.cnblogs.com/wpcockroach/p/2441420.html
Copyright © 2011-2022 走看看