LD 字符串比较算法
编程算法
比较字符串(String)相似程度的算法。
LD(s1, s2)=把s1变成s2需要的{增加,删除,替换}操作之和。
汉字的特殊处理:http://www.cnitblog.com/ictfly/archive/2005/12/27/5828.aspx
<html>
<head>
<title>求两个字符串的相似度,Levenshtein Distance算法实现</title>
</head>
<body>
<h3>求两个字符串的相似度,Levenshtein Distance算法实现</h3>
字符串1:<input id="s" type="text" value="小谢天空"><br>
字符串2:<input id="t" type="text" value="小谢的天空"><br>
<input type="button" value="计算" οnclick="test()"><br>
<div id="r"></div>
</body>
</html>
<script>
//求两个字符串的相似度,返回差别字符数,Levenshtein Distance算法实现
function Levenshtein_Distance(s,t){
var n=s.length;// length of s
var m=t.length;// length of t
var d=[];// matrix
var i;// iterates through s
var j;// iterates through t
var s_i;// ith character of s
var t_j;// jth character of t
var cost;// cost
// Step 1
if (n == 0) return m;
if (m == 0) return n;
// Step 2
for (i = 0; i <= n; i++) {
d[i]=[];
d[i][0] = i;
}
for (j = 0; j <= m; j++) {
d[0][j] = j;
}
// Step 3
for (i = 1; i <= n; i++) {
s_i = s.charAt (i - 1);
// Step 4
for (j = 1; j <= m; j++) {
t_j = t.charAt (j - 1);
// Step 5
if (s_i == t_j) {
cost = 0;
}else{
cost = 1;
}
// Step 6
d[i][j] = Minimum (d[i-1][j]+1, d[i][j-1]+1, d[i-1][j-1] + cost);
}
}
// Step 7
return d[n][m];
}
//求两个字符串的相似度,返回相似度百分比
function Levenshtein_Distance_Percent(s,t){
var l=s.length>t.length?s.length:t.length;
var d=Levenshtein_Distance(s,t);
return (1-d/l).toFixed(4);
}
//求三个数字中的最小值
function Minimum(a,b,c){
return a<b?(a<c?a:c):(b<c?b:c);
}
function test(){
var s=document.getElementById("s");
var t=document.getElementById("t");
var r=document.getElementById("r");
var l=Levenshtein_Distance_Percent(s.value,t.value);
r.innerHTML='字符串1:'+s.value+'<br>字符串2:'+t.value+'<br>'+'相似度:'+l+'<br>算法参考:<a href="http://www.merriampark.com/ld.htm" target="_blank">http://www.merriampark.com/ld.htm</a>';
}
</script>
LD 字符串比较算法相关推荐
- Algorithm:C++语言实现之字符串相关算法(字符串的循环左移、字符串的全排列、带有同个字符的全排列、串匹配问题的BF算法和KMP算法)
Algorithm:C++语言实现之字符串相关算法(字符串的循环左移.字符串的全排列.带有同个字符的全排列.串匹配问题的BF算法和KMP算法) 目录 一.字符串的算法 1.字符串的循环左移 2.字符串 ...
- kmp字符串查询算法
kmp字符串查询算法 1 普通的字符串查询 普通的字符串查询是遍历被查找的字符串,然后和key字符串进行匹配,如果不一致,则,被查找的字符串+1,继续向下遍历. 代码如下: private stati ...
- JavaScript实现levenshteinDistance字符串编辑距离算法(附完整源码)
JavaScript实现levenshteinDistance字符串编辑距离算法(附完整源码) levenshteinDistance.js完整源代码 # levenshteinDistance.te ...
- C语言自定义实现string字符串的算法(附完整源码)
C语言自定义实现string字符串的算法 string字符串的定义pstring.h(完整源码) string字符串的实现pstring.cpp(完整源码) string字符串的定义pstring.h ...
- C语言检查一个字符串是否为另一个字符串的子字符串的算法(附完整源码)
C语言检查一个字符串是否为另一个字符串的子字符串的算法 C语言检查一个字符串是否为另一个字符串的子字符串的算法完整源码(定义,实现,main函数测试) C语言检查一个字符串是否为另一个字符串的子字符串 ...
- C++反转字符串的算法(附完整源码)
C++反转字符串的算法 C++反转字符串的算法完整源码(定义,实现,main函数测试) C++反转字符串的算法完整源码(定义,实现,main函数测试) #include<iostream> ...
- 暴力子字符串查找算法
暴力子字符串查找算法的名字虽然很霸气,但是效率不是很高.是一种简单.粗暴的查找方式. 在最坏的情况下,暴力子字符串查找算法在长度为N的文本中查找长度为M的模式需要~NM次字符比较. 核心思想:就是对主 ...
- 关于一道面试题,使用C#实现字符串反转算法
关于一道面试题,使用C#实现字符串反转算法. 题目见http://student.csdn.net/space.php?do=question&ac=detail&qid=490 详细 ...
- 字符串全排列算法_C#版_剑指OFFER
字符串全排列算法_C#版_剑指OFFER 题目描述 题目描述 输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组. 例如输入字符串ABC,则输出由字符A, ...
最新文章
- css笔记 - transition学习笔记(二)
- 结构型模式:装饰模式
- 谈谈谷歌word2vec的原理
- 找工作,要工资高的,还是要自己喜欢的?
- 数据结构与算法专题——第一题 Bitmap算法
- python怎么开发工具_为程序员和新手准备的8大Python开发工具
- SSM项目调用Dao层查询方法传入正确参数但查不到数据
- Compile error: Cannot find a C++ compiler that supports both C++11 and the specified C++ flags
- django(三):配置文件settings.py、初始化数据库
- 起风了用计算机打,求《起风了》计算器谱。
- 【001】机器学习基础-凸优化基础
- Python3:私有成员
- 常用数学术语中英文表达对照
- 2021年全球汽车天线收入大约1816.1百万美元,预计2028年达到2199.7百万美元,2022至2028期间,年复合增长率CAGR为3.0%
- python报错:IndentationError:unindent does not match any outer indentation level
- 狂刷OJ基础题两天,OJ机考成功半小时全部AC了
- win7无法访问服务器共享文件夹解决办法
- 计算机专业校企合作协议,校企合作协议(计算机应用类、电子商务类、信息类等相关专业)...
- 基于《行列视》的自动报表——SIS系统接口状态监视
- ABAP subroutine 的定义和使用
热门文章
- JavaScript:异步函数
- 树莓派Centos系统下通过EC20模块进行4G上网
- ​慕尼黑大数据初创公司Celonis融资2.9亿美元
- mac上那个动态壁纸软件好看?
- 人社高级工计算机论述题,[精品]计算机高级维修工考试论述题
- 若不曾忘记,便不必追忆
- android exo解码问题,android – exoplayer-自动更改质量不起作用(hls)
- 竞赛表决心_决心在Excel中保持安全
- 园林计算机制图在计算机上的应用,浅谈计算机园林效果图在园林景观设计中运用.doc...
- 范式基本概念 第一范式、第二范式、第三范式