字符串编辑距离

字符串编辑距离

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

相关推荐
XiangrongZ2 小时前
江协科技STM32课程笔记(三)—定时器TIM(输出比较)
笔记·科技·stm32
wh_xia_jun6 小时前
Python串口通信与MQTT物联网网关:连接STM32与物联网平台
python·stm32·物联网
星辰pid9 小时前
STM32基于can总线通信控制多个舵机/电机原理及代码
stm32·单片机·嵌入式硬件
武文斌779 小时前
项目学习总结:CAN总线、摄像头、STM32概述
linux·arm开发·stm32·单片机·嵌入式硬件·学习·c#
Ching·18 小时前
STM32L4xx编译提示Keil MDK Warning: L6989W警告问题及其解决办法
stm32·单片机·嵌入式硬件
应用市场1 天前
STM32运行原理深度解析:从软件到硬件的神奇之旅
stm32·单片机·嵌入式硬件
Winner13001 天前
STM32 读取引脚状态 -按键输入
stm32·单片机·嵌入式硬件
爱睡觉的王宇昊1 天前
STM32通信协议全解析:UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB、SD卡、1-WIRE、Ethernet
stm32·单片机·嵌入式硬件
来自嵌入式的zyz1 天前
STM32项目实战/PID算法学习:编码电机闭环控制实现控速+位置控制、倒立摆实现
stm32·嵌入式硬件·学习·控制·pid
奋斗的阿狸_19861 天前
nuttx实战项目2:蓝牙有线通信板之一,nsh串口调试
stm32·单片机·嵌入式硬件