字符串编辑距离

字符串编辑距离

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

相关推荐
Y1rong1 小时前
STM32之中断
stm32·单片机·嵌入式硬件
先知后行。1 小时前
STM32F103的启动过程
stm32·单片机·嵌入式硬件
idcardwang2 小时前
xl9555-IO拓展芯片
stm32·单片机·嵌入式硬件
Y1rong2 小时前
STM32之EXTI
stm32·单片机·嵌入式硬件
兆龙电子单片机设计2 小时前
【STM32项目开源】STM32单片机智能语音家居控制系统
stm32·单片机·嵌入式硬件·物联网·开源·自动化
意法半导体STM323 小时前
【官方原创】SAU对NSC分区的影响 LAT1578
stm32·单片机·嵌入式硬件·mcu·信息安全·trustzone·stm32开发
SmartRadio3 小时前
MK8000(UWB射频芯片)与DW1000的协议适配
c语言·开发语言·stm32·单片机·嵌入式硬件·物联网·dw1000
LDR0063 小时前
芯片电路的引脚标识代表什么?
stm32·单片机·嵌入式硬件
猪八戒1.05 小时前
中断(按键、SYSTICK、串口)
stm32·单片机·嵌入式硬件
chem41115 小时前
STM32 ISP下载
stm32·单片机·接口隔离原则