字符串编辑距离

字符串编辑距离

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

相关推荐
某林21232 分钟前
ROS2 机器人底盘调试避坑指南:从 `/odom` 丢失到彻底跑通的硬核排障实录
stm32·机器人·人机交互
zlinear数据采集卡1 小时前
定时器电路深度解析:从经典555到STM32定时器,从ZLinear采集卡的工程化设计实战
stm32·单片机·嵌入式硬件·fpga开发·自动化
m0_377108142 小时前
stm32-USART
stm32·单片机·嵌入式硬件
不做无法实现的梦~5 小时前
常见工程分析软件
stm32·嵌入式硬件·算法
Sean_VIP6 小时前
FreeRTOS项目程序框架介绍(五)
笔记·stm32
嵌入式小站7 小时前
STM32 零基础可移植教程 15:ADC 多通道扫描,读取三路 PWM 的平均电压
stm32·单片机·嵌入式硬件
hai3152475438 小时前
# FiveOS V5.0 交付(终极合成器版 · 物理合规修正)
人工智能·stm32·单片机·嵌入式硬件·神经网络
嵌入式ZYXC8 小时前
第6章:通信接口的硬件特性——为什么你的UART乱码、I2C死锁、SPI干扰大?
stm32·单片机·嵌入式硬件·物联网·智能硬件
fffzd8 小时前
STM32:串口--轮询模式
stm32·单片机·嵌入式硬件·串口·hal库·轮询模式
染予9 小时前
实现功能:给stm32F427zgt6开发板配置网络,电脑可以ping通开发板
stm32·单片机·嵌入式硬件