根据java版本移植

View Code

  1 /// <summary>
  2     /// 编辑距离算法
  3     /// </summary>
  4     public class EditDistance
  5     {
  6         /**
  7     * 求三个数中的最小数Mar 1, 2007
  8     *
  9     * @param a
 10     * @param b
 11     * @param c
 12     * @return
 13     */
 14         private static int Minimum(int a, int b, int c)
 15         {
 16             int mi;
 17
 18             mi = a;
 19             if (b < mi)
 20             {
 21                 mi = b;
 22             }
 23             if (c < mi)
 24             {
 25                 mi = c;
 26             }
 27             return mi;
 28         }
 29
 30         /**
 31          * 计算两个字符串间的编辑距离Mar 1, 2007
 32          *  @param s
 33          *  @param t
 34          *  @return
 35          */
 36         public static int getEditDistance(String s, String t)
 37         {
 38             int[,] d; // matrix
 39             int n = 0; // length of s
 40             int m = 0; // length of t
 41             int i; // iterates through s
 42             int j; // iterates through t
 43             char s_i; // ith character of s
 44             char t_j; // jth character of t
 45             int cost; // cost
 46
 47             // Step 1
 48
 49             n = s.Length;
 50             m = t.Length;
 51             if (n == 0)
 52             {
 53                 return m;
 54             }
 55             if (m == 0)
 56             {
 57                 return n;
 58             }
 59             d = new int[n + 1, m + 1];
 60             //d = new int[n+1][+1];
 61
 62             // Step 2
 63
 64             for (i = 0; i <= n; i++)
 65             {
 66                 d[i, 0] = 1;
 67             }
 68
 69             for (j = 0; j <= m; j++)
 70             {
 71                 d[0, j] = j;
 72             }
 73
 74             // Step 3
 75
 76             for (i = 1; i <= n; i++)
 77             {
 78                 s_i = s[i - 1];
 79                 // Step 4
 80                 for (j = 1; j <= m; j++)
 81                 {
 82                     t_j = t[j - 1];
 83                     // Step 5
 84                     if (s_i == t_j)
 85                     {
 86                         cost = 0;
 87                     }
 88                     else
 89                     {
 90                         cost = 1;
 91                     }
 92                     // Step 6
 93                     d[i, j] = Minimum(d[i - 1, j] + 1, d[i, j - 1] + 1,
 94                             d[i - 1, j - 1] + cost);
 95                 }
 96             }
 97             // Step 7
 98             return d[n, m];
 99
100         }
101
102
103     }

转载于:https://www.cnblogs.com/lirenqing/archive/2012/12/24/2831634.html

编辑距离算法(C#版本)相关推荐

  1. 经典动态规划问题:最短编辑距离算法的原理及实现

    编辑距离的定义 编辑距离(Edit Distance)最常用的定义就是Levenstein距离,是由俄国科学家Vladimir Levenshtein于1965年提出的,所以编辑距离一般又称Leven ...

  2. Levenshtein distance 编辑距离算法

    这几天再看 virtrual-dom,关于两个列表的对比,讲到了 Levenshtein distance 距离,周末抽空做一下总结. Levenshtein Distance 介绍 在信息理论和计算 ...

  3. 最短编辑距离 python_最短编辑距离算法实现

    一,算法介绍 在CS124课程的第一周提到 求解两个字符串相似度的算法---Minimum Edit Distance(最短编辑距离)算法.该算法在NLP(自然语言处理)中也会用到. 如何定义相似度呢 ...

  4. 2021-03-15 数据挖掘算法—K-Means算法 Python版本

    数据挖掘算法-K-Means算法 Python版本 简介 又叫K-均值算法,是非监督学习中的聚类算法. 基本思想 k-means算法比较简单.在k-means算法中,用cluster来表示簇:容易证明 ...

  5. 2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用

    粒子群优化算法-Python版本和Matlab函数 particleswarm 调用 前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab ...

  6. ML之Hash_EditDistance:基于输入图片哈希化(均值哈希+差值哈希)即8*8个元素的单向vector利用编辑距离算法进行判别

    ML之Hash_EditDistance:基于输入图片哈希化(均值哈希+差值哈希)即8*8个元素的单向vector利用编辑距离算法进行判别 目录 输出结果 代码实现 相关文章 ML之相似度计算:图像数 ...

  7. JavaScript实现levenshteinDistance字符串编辑距离算法(附完整源码)

    JavaScript实现levenshteinDistance字符串编辑距离算法(附完整源码) levenshteinDistance.js完整源代码 # levenshteinDistance.te ...

  8. Levenshtein Distance算法(编辑距离算法)

    编辑距离 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符, ...

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

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

最新文章

  1. vs2012html图片,简单几步 实现vs2010对html5的支持
  2. 《剑指offer》c++版本 6.从尾到头打印链表
  3. 求高光谱图像相关系数矩阵
  4. C++学习——C++中的四个智能指针
  5. windbg-内存破坏实例分析
  6. Django项目部署(nginx1.18+uwgsi)
  7. ajax 请求struts1,jquery ajax +struts1.3
  8. 通过swagger下载的文件乱码解决方法,求解
  9. 代码健壮性 —— 边界条件的判断
  10. 南京邮电大学matlab实验报告,南京邮电大学通信与信息处理江苏省实验教学示范中心...
  11. 计算机软件专业搞腾讯地图,腾讯地图电脑版
  12. IEEE standard for verilog (Expressions)
  13. gentoo适合做服务器系统吗,Mandriva、Gentoo发行版
  14. 利用Github快速搭建个人博客总结(亲测)
  15. SparkMllib模型选择与优化-网格搜索和交叉验证
  16. python之路_面向对象
  17. 职场中干好工作的18准则
  18. Java数组去重问题
  19. 当前版本与卡刷包android_手机端提取Android 8.x及以上版本卡刷包中的system文件
  20. FBI 网站被黑,黑客获取 100 万条联邦特工身份信息

热门文章

  1. requests cookie
  2. Pandas 表连接(Merge,join,concatenate)
  3. freecplus框架-PostgreSQL数据库操作
  4. java springmvc 后台读取文件,springMVC
  5. s7填表指令att_第五章 S7-200 指令系统.ppt
  6. PHP自动压缩CSS文件方法,php 压缩多个CSS文件的实现代码
  7. HCIBench_2.3.1部署_VSAN_测试工具
  8. Docker学习总结(33)——Docker环境下搭建 MySQL 主从复制
  9. 戏说云计算之PaaS,IaaS,SaaS
  10. Spring MVC学习总结(9)——Spring MVC整合swagger自动生成api接口文档