java高效比较两个字符串的相似度算法

java高效比较两个字符串的相似度算法

 

解决方法:

Levenshtein Distance,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。

许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。

编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance。

 

算法原理:

该算法的解决是基于动态规划的思想,具体如下:

设 s 的长度为 n,t 的长度为 m。如果 n = 0,则返回 m 并退出;如果 m=0,则返回 n 并退出。否则构建一个数组 d[0..m, 0..n]。

将第0行初始化为 0..n,第0列初始化为0..m。

依次检查 s 的每个字母(i=1..n)。

依次检查 t 的每个字母(j=1..m)。

如果 s[i]=t[j],则 cost=0;如果 s[i]!=t[j],则 cost=1。将 d[i,j] 设置为以下三个值中的最小值:

紧邻当前格上方的格的值加一,即 d[i-1,j]+1

紧邻当前格左方的格的值加一,即 d[i,j-1]+1

当前格左上方的格的值加cost,即 d[i-1,j-1]+cost

重复3-6步直到循环结束。d[n,m]即为莱茵斯坦距离。

代码:http://www.yayihouse.com/yayishuwu/chapter/1872

你可能感兴趣的:(java高效比较两个字符串的相似度算法)