[python]My Unique JsonDiff算法——如何计算2个json串之间的差距并Diff出来(一):编辑距离(Levenshtein)算法

本文介绍了作者为解决工作中比对JSON字符串差异的需求,自研JsonDiff算法的过程。首先讲解了编辑距离(Levenshtein)算法,它是计算字符串转换所需最少编辑操作次数的基础。通过动态规划实现编辑距离算法,核心公式和Python代码示例给出。文章也提及了算法的时间和空间复杂度,并提出了使用列向量优化内存开销的思路。
摘要由CSDN通过智能技术生成

    啊啊,年底忙着签证什么的,好久没写日志啦。。。。新年到来,整点干货出来给大家~~顺便为自己考试和申请学校攒点人品~~
    之前实习的时候,因为实习公司的业务需求,需要一个比对json字符串差异的算法,然而我在网上查了很久的资料,发现竟然没有现成的jsondiff算法。。。残念了很久之后,只能自己动手研究一种算法用来比对json字符串差异啦。。。我会在接下来的文章中,慢慢将整个jsondiff算法的思路展开的。


    jsondiff的算法实质上就是对于特殊结构字符串的一种比对算法,因此首先引入的是最基础的字符串比对算法之一:编辑距离算法(又称Levenshtein算法)。编辑距离指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。通常这里的编辑操作是指替换、插入和删除操作,即将一个字符替换成另一个字符、插入一个字符或者删除一个字符。
    举个例子,假如我们想要使"sina.com“这个字符串变成“sina.cn”,那么最简单的方法就是删去"o",然后将"m"替换为"n"即可,这里进行了2次编辑操作,即编辑距离为2。

    而Levenshtein算法就是用于计算这种编辑距离的一种常见算法,其核心思想采用的是动态规划。

    这里给出核心公式,我们根据这个公式从上到下构造矩阵就可以啦。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值