[搜索]字符串的相似度问题-从编程之美说起
在《编程之美》之3.3讲到了计算字符串的相似度,请看下图
原文作者做了很详细的解释,有兴趣的朋友可以参考原文。
其实,总结为一点,是求两个字符的编辑距离,关于编辑距离,可以参考这儿
http://zh.wikipedia.org/wiki/%E7%B7%A8%E8%BC%AF%E8%B7%9D%E9%9B%A2
求两个字符串的编辑距离是有公式的,公式如下:
所以,根据这个公式,我们实现代码为:(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;elsecost = 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);
}
求出来编辑距离,取倒数就是上面提到的相似度。
[搜索]字符串的相似度问题-从编程之美说起相关推荐
- 《编程之美》 查找最大(小)的k个元素
http://blog.csdn.net/v_july_v/article/details/6370650 http://blog.csdn.net/insistgogo/article/detail ...
- es6与java的相似度_计算字符串的相似度-两种解法
一直不理解,为什么要计算两个字符串的相似度呢.什么叫做两个字符串的相似度.经常看别人的博客,碰到比较牛的人,然后就翻了翻,终于找到了比较全面的答案和为什么要计算字符串相似度的解释.因为搜索引擎要把通过 ...
- 编程之美3.3 计算两个字符串的相似度
假如有两个字符串分别是:abcd,bbcd,那么,这两个字符串不相同的字符个数是1,即第一个字符时不相同的,定义字符串的相似度为 1 / (x + 1),其中,x 就是不相同的字符个数. ...
- mysql数据库搜索字符_在MySQL数据库中快速搜索字符串?
使用FULLTEXT搜索来快速搜索字符串.让我们首先创建一个表-mysql> create table DemoTable1554 -> ( -> Title text -> ...
- 获得Google搜索字符串中的关键字
/// <summary> /// 获得Google搜索字符串中的关键字 /// </summary> /// <returns></return ...
- 问题记录:如何比较两个字符串的相似度
问题记录:如何比较两个字符串的相似度 问题记录:如何比较两个字符串的相似度 posted on 2017-04-12 11:15 时空观察者9号 阅读(...) 评论(...) 编辑 收藏
- 外挂学习之路(12)--- 用CE搜索字符串和搜索字符数组的区别
用VS2008写个小工程做测试,得到如下一些结论 代码如下: TCHAR test[50] = TEXT("你好啊"); void CasciiDlg::OnBnClickedBu ...
- 对比俩个字符串的相似度
package com.opslab.util.algorithmImpl; import com.opslab.util.CharsetUtil; import com.opslab.util.Sy ...
- 比较两个字符串的相似度算法
平时的编码中,我们经常需要判断两个文本的相似性,不管是用来做文本纠错或者去重等等,那么我们应该以什么维度来判断相似性呢?这些算法又怎么实现呢?这篇文章对常见的计算方式做一个记录.Levenshtein ...
最新文章
- Linux下,使用nginx+ffmpeg+video.js实现直播效果(含centos7环境配置步骤)
- java如何jasper_Jasper's Java Jacal
- MySQL高级 - 日志 - 查询日志
- python基本语法:列表(列表和元组的区别)
- 查看系统表存储过程名称
- django自带调试服务器的使用
- HttpApplication的认识与加深理解
- 明天上线!部分开发者手机已安装鸿蒙OS:超流畅,可装安卓应用
- java中prepend的用法_jQuery中prepend()方法用法实例
- SWAT模型高阶应用暨无资料地区建模、不确定分析与气候变化、土地利用对面源污染影响模型改进案例分析
- 读计算机网络得学五笔吗,电脑五笔打字难不难学?大约要学多久才可以掌握?
- 开关电源初级和次级变压器之间的Y电容作用
- jQuery事件绑定和解绑
- html判断手机浏览器,JS判断浏览器iOS(iPhone)、Android手机移动端
- 平均值不等式证明(数学归纳法)
- 虚拟磁盘格式转换:vdi - raw - qcow2
- Postman模拟接口API:接收请求报文equest,响应返回固定报文response
- Java变量-Java变量运算
- Chromium for windows (2015)
- 【睿慕课点云处理】第一章-基础知识
热门文章
- php改密后joomla无法登陆,恢复丢失的Joomla密码的最常用方法
- 8.0ble设备 android_【胖猴小玩闹】智能门锁与BLE设备安全Part 4:一次BLE智能手环的小玩闹...
- oracle数据抽取脚本,oracle的一些信息抽取脚本.sql
- c++ 纯虚函数和抽象类那些事(二)实现抽象类
- change事件判断ajax,jquery中change事件里面if语句失效
- 76. Leetcode 295. 数据流的中位数 (堆-技巧一-固定堆)
- 未排序正整数组中累加和为指定值的最长子数组长度
- geyser学习记录(day2):我们在命令行当中怎么使用这个架构?
- R语言实战应用精讲50篇(二十九)-R语言算法应用案例:路径路网轨迹绘图分析(英国自行车数据库)
- Tableau可视化分析实战系列Tableau基础概念全解析 (一)-数据结构及字段