编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
例如将kitten一字转成sitting:
sitten (k→s)
sittin (e→i)
sitting (→g)
俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念。
原理不再追溯,大牛博客应有尽有 善用搜索引擎皆可查询,下面贴出C# 实现,通过.net 3.0 扩展方法 调用方便
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace System
{public static class StringExt{/// <summary>/// 获取最小数值/// </summary>private static int getMin(int a, int b, int c){var min = Math.Min(a, b);return Math.Min(min, c);}/// <summary>/// 字符距离算法,获取字符编辑距离/// </summary>public static int Levenshtein_Distance(this string str1, string str2){int[,] Matrix;int n = str1.Length;int m = str2.Length;char c1, c2;int temp = 0;int i, j = 0;if (n == 0)return m;if (m == 0)return n;Matrix = new int[n + 1, m + 1];for (i = 0; i <= n; i++){Matrix[i, 0] = i;}for (j = 0; j <= m; j++){Matrix[0, j] = j;}for (i = 1; i <= n; i++){c1 = str1[i - 1];for (j = 1; j <= m; j++){c2 = str2[j - 1];if (c1.Equals(c2)){temp = 0;}else{temp = 1;}Matrix[i, j] = getMin(Matrix[i - 1, j] + 1, Matrix[i, j - 1] + 1, Matrix[i - 1, j - 1] + temp);}}return Matrix[n, m];}/// <summary>/// 获取字符相识度/// </summary>public static decimal GetSimilarity(this string str1, string str2){var l = str1.Levenshtein_Distance(str2);return  1 - (decimal)l / Math.Max(str1.Length, str1.Length);}}
}

调用方法

       //获取字符编辑距离var l = textBox1.Text.ToString().Levenshtein_Distance(textBox2.Text);//获取字符相识度decimal Similarity = textBox1.Text.GetSimilarity(textBox2.Text);

转载于:https://www.cnblogs.com/teamate/p/3859202.html

[Irving]字符串相似度-字符编辑距离算法(c#实现)相关推荐

  1. 字符串相似度之编辑距离算法

    字符串编辑距离: 是一种字符串之间相似度计算的方法.给定两个字符串S.T,将S转换成T所需要的删除,插入,替换操作的数量就叫做S到T的编辑路径.而最短的编辑路径就叫做字符串S和T的编辑距离. 举个例子 ...

  2. 【python】字符串相似度:编辑距离算法

    编辑距离算法 即MED(Minimum Edit Distance)算法,由俄罗斯的 Vladimir Levenshtein 在1965年提出,故又称Levenshtein距离. 所谓编辑距离,指的 ...

  3. 字符串相似度匹配算法python_算法字符串相似度得分/哈希

    有趣的问题.我在这一领域的经验有限,但由于Levenshtein距离满足三角形不等式,我认为必须有一种方法来计算到原点的某种绝对距离,以便在不与整个数据库中的所有条目进行直接比较的情况下找到彼此邻近的 ...

  4. python 字符串相似度判断详解

    1. 背景介绍 最近项目中要用到两个字符串相似度的求解算法,来矫正ocr文本识别的结果,进而提高识别的准确率,通过矫正(相当于模糊查询),识别准确率从65%上升到90%.其结果还是令人兴奋的,因此写博 ...

  5. java实现编辑距离算法(levenshtein distance),计算字符串或者是文本之间的相似度【附代码】

    编辑距离算法其实就是,在规定的编辑操作(替换字符串.插入字符串.删除字符串)中,经过几步可以把一个字符串变成另一个字符串,而这个所需的步数就是你的编辑距离. 测试样例: str1 = abc str2 ...

  6. 字符串相似度算法(编辑距离算法)

    编辑距离算法 前言 原理 公式 例子 实现 后记 前言 比较两个字符串的相似度,通常我们会使用编辑距离算法来实现. 下面是常用字符串相似度计算的方法: 字符串相似度的几种度量方法 原理 最小编辑距离的 ...

  7. Java获取相同字符串算法题,数据结构与算法专题——第四题 字符串相似度

    这篇我们看看 最长公共子序列 的另一个版本,求字符串相似度(编辑距离),我也说过了,这是一个非常实用的算法,在DNA对比,网页聚类等方面都有用武之地. 一:概念 对于两个字符串 A 和 B,通过基本的 ...

  8. 数据结构与算法专题——第四题 字符串相似度

    这篇我们看看 最长公共子序列 的另一个版本,求字符串相似度(编辑距离),我也说过了,这是一个非常实用的算法,在DNA对比,网页聚类等方面都有用武之地. 一:概念 对于两个字符串 A 和 B,通过基本的 ...

  9. 最长公共子序列算法 java_转【算法之动态规划(三)】动态规划算法之:最长公共子序列 最长公共子串(LCS)字符串相似度算法...

    1.先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的.而最长公共子序列则并不要求连续. 2.最长公共子串 其实这是一个序贯决策问题 ...

  10. 经典算法题每日演练——第五题 字符串相似度

    原文地址:http://www.cnblogs.com/huangxincheng/archive/2012/11/11/2765633.html 这篇我们看看最长公共子序列的另一个版本,求字符串相似 ...

最新文章

  1. 485有时候从机接收指令没反应_原来微信发语音不好听,是你没掌握这2个技巧!快去试试吧...
  2. 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(8) 权限管理,自定义权限,扩展权限...
  3. php mysql 分组 分页_简单的PHP+Mysql实现分页
  4. FOSRestBundle功能包:自动路由生成-单REST风格控制器
  5. 使用.net Stopwatch class 来分析你的代码
  6. mysql撤销用户授权_mysql用户授权及撤销
  7. EDA技术使用教程实验
  8. wordpress迁移后,伪静态404解决方法
  9. 十大面试问题解惑,秒杀一切HR、技术面试。iOS程序员必读!
  10. 【时间统计】windows/linux 获取本地时间(精确到微妙)
  11. 2021年中国电缆吹风机市场趋势报告、技术动态创新及2027年市场预测
  12. 留给字节跳动的时间可能不多了!
  13. Android UI开发第三十二篇——Creating a Navigation Drawer
  14. Ubuntu18.04 如何用gcc编译objective-c
  15. Android 高德地图No implementation found for long com.autonavi.amap.mapcore.MapCore
  16. 2019奥斯卡谁是赢家 这里有一份来自AI的预测名单
  17. 展讯模块读写IMEI
  18. JavaScript 原生js实现自定义消息提示框
  19. Wcf 文件上传下载
  20. vue循环jq渲染网页页面

热门文章

  1. RS-485 工作逻辑
  2. 小蓝本 第一本《因式分解技巧》 第一章 提公因式 笔记(第一天)
  3. 《短线交易大师》的读书笔记
  4. 前端切图实战(PSD设计稿转化为前端)
  5. 计算机桌面有个方框,电脑桌面总出现蓝色框怎么办
  6. graphpad多条不同的曲线_GraphPad Prism
  7. snaker工作流审批流程参数详解
  8. jQuery图像照片剪裁插件Jcrop中文演示
  9. flask 数据库迁移migration
  10. python中mod函数_Python pandas.DataFrame.mod函数方法的使用