scala文本编辑距离算法实现

来源:互联网 发布:wps两列对比重复数据 编辑:程序博客网 时间:2024/05/29 10:19

编辑距离定义:

编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。
许可的编辑操作包括:将一个字符替换成另一个字符,插入一个字符,删除一个字符。
例如将eeba转变成abac:
1. eba(删除第一个e)
2. aba(将剩下的e替换成a)
3. abac(在末尾插入c)
所以eeba和abac的编辑距离就是3
俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念。

代码实现:
def editDist(s1:String, s2:String):Int ={    val s1_length = s1.length+1    val s2_length = s2.length+1    val matrix=Array.ofDim[Int](s1_length,s2_length)    for(i <- 0.until(s1_length)){      matrix(i)(0) = i    }    for(j <- 0.until(s2_length)){      matrix(0)(j) = j    }    var cost = 0    for(j <- 1.until(s2_length)){      for(i <- 1.until(s1_length)){        if(s1.charAt(i-1)==s2.charAt(j-1)){          cost = 0        }else{          cost = 1        }        matrix(i)(j)=math.min(math.min(matrix(i-1)(j)+1,matrix(i)(j-1)+1),matrix(i-1)(j-1)+cost)      }    }    matrix(s1_length-1)(s2_length-1)}



阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 俞文清燕窝 俞白眉 安俞今生 饮料招商俞文清燕窝水 燕窝饮料俞文清燕窝水 燕窝水俞文清 燕窝饮品俞文清燕窝水 朝俞h做题play 贺朝谢俞浴室play 陆景铄俞淼淼全文免费 谢俞贺朝 权俞利 肾俞穴 贺朝谢俞肉补道具play 俞淼淼陆景铄 贺朝谢俞道具play 俞伯自伯图 俞定延 贺朝谢俞肉 俞怎么读 脾俞穴 肾俞穴位置 俞渝简历 朝俞镜子play 安俞今生疯子三三 俞白眉个人资料 俞兆林 肝俞穴 绍兴俞家 俞穴位置 谢俞贺朝肉 俞伯平 胃脘下俞 俞沁园 王字旁俞 井荣俞经合 艾俞胶囊 俞氏尼美舒利颗粒 何超琼俞 叶北城俞静雅之宠妻入骨全文 陆景铄俞淼淼全文免费阅读