码迷,mamicode.com
首页 > 其他好文 > 详细

[搜索]字符串的相似度问题-从编程之美说起

时间:2014-11-21 09:13:39      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:编程之美   搜索   编辑距离 字符串相似度   

在《编程之美》之3.3讲到了计算字符串的相似度,请看下图

bubuko.com,布布扣

原文作者做了很详细的解释,有兴趣的朋友可以参考原文。

其实,总结为一点,是求两个字符的编辑距离,关于编辑距离,可以参考这儿

http://zh.wikipedia.org/wiki/%E7%B7%A8%E8%BC%AF%E8%B7%9D%E9%9B%A2

求两个字符串的编辑距离是有公式的,公式如下:

bubuko.com,布布扣


所以,根据这个公式,我们实现代码为:(C++)

int minimum(int a,int b,int c)
{
	return min(a,min(b,c));
}
int LevenshteinDistance(const char* s, int len_s, const char* t, int len_t)
{
	/* base case: empty strings */
	if (len_s == 0) return len_t;
	if (len_t == 0) return len_s;
	int cost = 0;
	/* test if last characters of the strings match */
	if (s[len_s-1] == t[len_t-1])
		cost = 0;
	else
		cost = 1;

	/* return minimum of delete char from s, delete char from t, and delete char from both */
	return minimum(LevenshteinDistance(s, len_s - 1, t, len_t    ) + 1,
		LevenshteinDistance(s, len_s    , t, len_t - 1) + 1,
		LevenshteinDistance(s, len_s - 1, t, len_t - 1) + cost);
}

求出来编辑距离,取倒数就是上面提到的相似度。




[搜索]字符串的相似度问题-从编程之美说起

标签:编程之美   搜索   编辑距离 字符串相似度   

原文地址:http://blog.csdn.net/zhanghaiyang9999/article/details/41324749

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!