字符串相似度算法

字符串相似度算法

1. 介绍

最近项目中有一个小算法要求判断字符串大致内容相等,相当于模糊查询,正好查到了这个字符串相似算法。这个算法又被称为“编辑距离算法”,所谓编辑距离,就是用来计算从原串(s)转换到目标串(t)所需要的最少的插入,删除和替换的数目。

2.算法原理
这里,我们举一个简单的例子,计算字符串“abc”“abe”的相似度。首先,需要构建一个二维数组,用来算最大编辑距离。如图:
初始化二维数组
初始化二维数组,从B2到E2和从B2到B5顺次为0,1,2…下面我们需要填写这个二维数组的每一格数据,最终得到我们从abc到abe所需的最大编辑距离。
这里,每一个格子是这样的

每一个格子由他的左边的格子上边的格子和左上角的格子决定。

具体来说,每一个方框的数字可以这样得来:
1. 左边的数字加一
2. 上边的数字加一
3. 如果这一格对应的行和列字母不同的话, 左上角的数字加一,否则加零。

举个例子,我们现在填如图选定的那个框(c3)。
例子一
根据上面的方法,这个框里的数字来源有三种 :
c2处得来的:1+1=2
b3处得来的:1+1=2
b2处得来的:因为a与a相同,所以0+0 = 0;
在这三个书中,我们找最小的数,即0填入即可。

看到这,恐怕很多看官很奇怪了,没事干为啥加一加零的,凭啥就左上角的数要分情况?不要急,我们在看一个例子,有了这个例子我想回更好理解。

这次我们填c4:

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值