字符串编辑距离

字符串编辑距离

Fast C++ CSV Parser 参考

复制代码
编辑距离,又称Levenshtein距离,WIKI,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。
许可的编辑操作包括:将一个字符替换成另一个字符,插入一个字符,删除一个字符。
俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念。
可以用来词相似度的比较。
python 复制代码
def normal_leven(str1, str2):
    len_str1 = len(str1) + 1
    len_str2 = len(str2) + 1

    matrix = [0 for n in range(len_str1 * len_str2)]

    for i in range(len_str1):
        matrix[i] = i
    for j in range(0, len(matrix), len_str1):
        if j % len_str1 == 0:
            matrix[j] = j // len_str1

    for i in range(1, len_str1):
        for j in range(1, len_str2):
            if str1[i - 1] == str2[j - 1]:
                cost = 0
            else:
                cost = 1
            matrix[j * len_str1 + i] = min(matrix[(j - 1) * len_str1 + i] + 1,
                                           matrix[j * len_str1 + (i - 1)] + 1,
                                           matrix[(j - 1) * len_str1 + (i - 1)] + cost)

    return matrix[-1]

if __name__ == '__main__':
    s1 = 'abcde'
    s2 = 'adcdef'
    print normal_leven(s1, s2)

输出:2,即abcde与adcdef的编辑距离是2

相关推荐
单片机仿真设计10 小时前
【proteus仿真】基于 STM32 单片机恒温箱控制系统设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
新晨单片机设计12 小时前
S003A-基于STM32单片机温度计(数码管显示)【Proteus仿真+Keil程序+原理图】
stm32·单片机·stm32单片机功能定制
一条破秋裤12 小时前
TIM 输入捕获与 PWMI:从边沿到频率、占空比
笔记·stm32·学习
单片机仿真设计13 小时前
【proteus仿真】基于 STM32 的久坐提醒与坐姿矫正器设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
一条破秋裤13 小时前
STM32 学习笔记:PWM 输出比较原理与计算
笔记·stm32·学习
jianqiang.xue14 小时前
ESP-IDF保姆级入门09|ADC模拟量采集全解:电位器调压+光敏传感器+OLED显示,打通模拟→数字全链路
stm32·单片机·物联网·架构·esp32
Freak嵌入式15 小时前
MicroPython+Pico 接收空闲中断和发送空闲中断全实战
java·开发语言·stm32·单片机·嵌入式硬件
LCG元16 小时前
STM32F103 硬件 I2C 通信全流程调试实录:从寄存器配置到总线死锁恢复
stm32·单片机·嵌入式硬件
LCG元16 小时前
STM32L4 ADC+DMA 多通道采集实战:从 CubeMX 配置到 VREFINT 电压校准
stm32·单片机·嵌入式硬件
单片机仿真设计16 小时前
【proteus仿真】基于 STM32 快递运输避障小车设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设