在《编程之美》之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);
}

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



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

  1. 《编程之美》 查找最大(小)的k个元素

    http://blog.csdn.net/v_july_v/article/details/6370650 http://blog.csdn.net/insistgogo/article/detail ...

  2. es6与java的相似度_计算字符串的相似度-两种解法

    一直不理解,为什么要计算两个字符串的相似度呢.什么叫做两个字符串的相似度.经常看别人的博客,碰到比较牛的人,然后就翻了翻,终于找到了比较全面的答案和为什么要计算字符串相似度的解释.因为搜索引擎要把通过 ...

  3. 编程之美3.3 计算两个字符串的相似度

          假如有两个字符串分别是:abcd,bbcd,那么,这两个字符串不相同的字符个数是1,即第一个字符时不相同的,定义字符串的相似度为 1 / (x + 1),其中,x 就是不相同的字符个数. ...

  4. mysql数据库搜索字符_在MySQL数据库中快速搜索字符串?

    使用FULLTEXT搜索来快速搜索字符串.让我们首先创建一个表-mysql> create table DemoTable1554 -> ( -> Title text ->  ...

  5. 获得Google搜索字符串中的关键字

    /// <summary>   /// 获得Google搜索字符串中的关键字   /// </summary>   /// <returns></return ...

  6. 问题记录:如何比较两个字符串的相似度

    问题记录:如何比较两个字符串的相似度 问题记录:如何比较两个字符串的相似度 posted on 2017-04-12 11:15 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

  7. 外挂学习之路(12)--- 用CE搜索字符串和搜索字符数组的区别

    用VS2008写个小工程做测试,得到如下一些结论 代码如下: TCHAR test[50] = TEXT("你好啊"); void CasciiDlg::OnBnClickedBu ...

  8. 对比俩个字符串的相似度

    package com.opslab.util.algorithmImpl; import com.opslab.util.CharsetUtil; import com.opslab.util.Sy ...

  9. 比较两个字符串的相似度算法

    平时的编码中,我们经常需要判断两个文本的相似性,不管是用来做文本纠错或者去重等等,那么我们应该以什么维度来判断相似性呢?这些算法又怎么实现呢?这篇文章对常见的计算方式做一个记录.Levenshtein ...

最新文章

  1. Linux下,使用nginx+ffmpeg+video.js实现直播效果(含centos7环境配置步骤)
  2. java如何jasper_Jasper's Java Jacal
  3. MySQL高级 - 日志 - 查询日志
  4. python基本语法:列表(列表和元组的区别)
  5. 查看系统表存储过程名称
  6. django自带调试服务器的使用
  7. HttpApplication的认识与加深理解
  8. 明天上线!部分开发者手机已安装鸿蒙OS:超流畅,可装安卓应用
  9. java中prepend的用法_jQuery中prepend()方法用法实例
  10. SWAT模型高阶应用暨无资料地区建模、不确定分析与气候变化、土地利用对面源污染影响模型改进案例分析
  11. 读计算机网络得学五笔吗,电脑五笔打字难不难学?大约要学多久才可以掌握?
  12. 开关电源初级和次级变压器之间的Y电容作用
  13. jQuery事件绑定和解绑
  14. html判断手机浏览器,JS判断浏览器iOS(iPhone)、Android手机移动端
  15. 平均值不等式证明(数学归纳法)
  16. 虚拟磁盘格式转换:vdi - raw - qcow2
  17. Postman模拟接口API:接收请求报文equest,响应返回固定报文response
  18. Java变量-Java变量运算
  19. Chromium for windows (2015)
  20. 【睿慕课点云处理】第一章-基础知识

热门文章

  1. php改密后joomla无法登陆,恢复丢失的Joomla密码的最常用方法
  2. 8.0ble设备 android_【胖猴小玩闹】智能门锁与BLE设备安全Part 4:一次BLE智能手环的小玩闹...
  3. oracle数据抽取脚本,oracle的一些信息抽取脚本.sql
  4. c++ 纯虚函数和抽象类那些事(二)实现抽象类
  5. change事件判断ajax,jquery中change事件里面if语句失效
  6. 76. Leetcode 295. 数据流的中位数 (堆-技巧一-固定堆)
  7. 未排序正整数组中累加和为指定值的最长子数组长度
  8. geyser学习记录(day2):我们在命令行当中怎么使用这个架构?
  9. R语言实战应用精讲50篇(二十九)-R语言算法应用案例:路径路网轨迹绘图分析(英国自行车数据库)
  10. Tableau可视化分析实战系列Tableau基础概念全解析 (一)-数据结构及字段