[java]代码库package code;

/**

* @className:MyLevenshtein.java

* @classDescription:Levenshtein Distance 算法实现

* 可以使用的地方:DNA分析   拼字检查   语音辨识   抄袭侦测

* @author:donghai.wan

* @createTime:2012-1-12

*/

public class MyLevenshtein {

public static void main(String[] args) {

//要比较的两个字符串

String str1 = "今天星期四";

String str2 = "今天是星期五";

levenshtein(str1,str2);

}

/**

*   DNA分析   拼字检查   语音辨识   抄袭侦测

*

* @createTime 2012-1-12

*/

public static void levenshtein(String str1,String str2) {

//计算两个字符串的长度。

int len1 = str1.length();

int len2 = str2.length();

//建立上面说的数组,比字符长度大一个空间

int[][] dif = new int[len1 + 1][len2 + 1];

//赋初值,步骤B。

for (int a = 0; a <= len1; a++) {

dif[a][0] = a;

}

for (int a = 0; a <= len2; a++) {

dif[0][a] = a;

}

//计算两个字符是否一样,计算左上的值

int temp;

for (int i = 1; i <= len1; i++) {

for (int j = 1; j <= len2; j++) {

if (str1.charAt(i - 1) == str2.charAt(j - 1)) {

temp = 0;

} else {

temp = 1;

}

//取三个值中最小的

dif[i][j] = min(dif[i - 1][j - 1] + temp, dif[i][j - 1] + 1,

dif[i - 1][j] + 1);

}

}

System.out.println("字符串\""+str1+"\"与\""+str2+"\"的比较");

//取数组右下角的值,同样不同位置代表不同字符串的比较

System.out.println("差异步骤:"+dif[len1][len2]);

//计算相似度

float similarity =1 - (float) dif[len1][len2] / Math.max(str1.length(), str2.length());

System.out.println("相似度:"+similarity);

}

//得到最小值

private static int min(int... is) {

int min = Integer.MAX_VALUE;

for (int i : is) {

if (min > i) {

min = i;

}

}

return min;

}

}

java levenshtein算法_DNA分析 拼字检查 语音辨识 抄袭侦测 - Levenshtein算法相关推荐

  1. Levenshtein Distance编辑距离应用实践——拼写检查(Java fork/join框架实现)

    文章目录 1. 实现莱文斯坦距离算法 1.1 算法原理分析 1.2 代码实现 2. 使用fork/join进行匹配 2.1 单线程匹配 2.2 fork/join多线程匹配 2.3 传统多线程版本 2 ...

  2. java实现apriori算法_各种排序算法的分析及java实现(一)

    阅读本文约需要7分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下用Navicat for Mysql导入.sql文件的 ...

  3. dv算法java实现_各种排序算法的分析及java实现(二)

    更多精彩,请点击上方蓝字关注我们! 上次跟大家分享了下各种排序算法的分析及java实现(一)的相关知识,今天跟大家分享各种排序算法的分析及java实现(二)的知识.昨天我们讲到了选择排序,今天我们继续 ...

  4. java共识算法_PBFT共识算法详细分析及Java实现

    PBFT共识算法详细分析及Java实现 为什么写这个 最近研究了区块链相关的一些东西,其实就三大块: 分布式存储(去中心) 共识机制 安全加密 分布式存储,就是一个分布式数据库,每个节点都保存一份副本 ...

  5. 各种排序算法的分析及java实现 - 残剑_ - 博客园

    排序一直以来都是让我很头疼的事,以前上<数据结构>打酱油去了,整个学期下来才勉强能写出个冒泡排序.由于下半年要准备工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间 ...

  6. 【Android 内存优化】Java 内存模型 ( Java 虚拟机内存模型 | 线程私有区 | 共享数据区 | 内存回收算法 | 引用计数 | 可达性分析 )

    文章目录 一. Java 虚拟机内存模型 二. 程序计数器 ( 线程私有区 ) 三. 虚拟机栈 ( 线程私有区 ) 四. 本地方法栈 ( 线程私有区 ) 五. 方法区 ( 共享数据区 ) 1. 方法区 ...

  7. java插入排序实现,经典(Java版)排序算法的分析及实现之一直接插入排序

    预备知识 排序算法从功能上是对一个数据元素集合或序列重新排列成一个按数据元素某个相知有序的序列.从内存空间使用简单上看分为内部排序和外部排序. 内部排序是数据记录在内存中进行排序,适合不太大的元素序列 ...

  8. 冒泡排序算法(思路分析) [数据结构][Java]

    冒泡排序算法(思路分析) 基本介绍: 冒泡排序(Bubble Sorting)的基本思想是: 通过对 "待排序序列" 从前向后一次比较相邻元素的值,若发现逆序则交换,使值较大的元素 ...

  9. 希尔排序算法(思路分析) [数据结构][Java]

    希尔排序算法(思路分析) 希尔排序也称之为: 缩小增量排序 希尔排序提出的背景: 因为简单插入排序中存在一些问题( 这里我们以升序排序为例 ): 当我们要待插入的数值比较小时后移的次数明显增多,对效率 ...

最新文章

  1. mysql索引有哪些_MySQL索引是个什么东西
  2. jsp静态化和伪静态化转载
  3. html语言制作留言条,利用DIV+CSS制作右下角弹出留言板
  4. 阿里云服务器如何加强服务器的安全?有哪些安全措施?
  5. 2020年高等数学方法与提高(上海理工大学)学习笔记:多元函数积分学
  6. c++获得cpu厂商_使用Visual C++编程取得CPU信息
  7. 【Flutter】微信项目实战【07】 通讯录界面搭建(下)
  8. 利用google工具进行关键词研究
  9. 用Python来实现2~7阶行列式的计算
  10. WIFI和WLAN的区别是什么
  11. 海康web插件视频播放异常
  12. 计算机找不到WPS云盘,wps网盘在哪里打开及如何应用?
  13. opencv实战2-修改保存图片、像素操作
  14. Python练习:每月乘坐地铁费用
  15. 公众号模板消息 跳转小程序报错invalid weapp pagepath解决方法
  16. 语音模块LD3320模块的二次开发,并与树莓派进行串口通信
  17. linux彻底清除磁盘阵列,Linux下彻底关闭某个RAID磁盘阵列
  18. 我是如何诱骗你的-高级钓鱼技术
  19. 西游记中孙悟空的等级地位
  20. 南昌师范学院同学会05级计算机,返校感言|故事初始,是回归,回到南昌师范学院的TA们,说了这些……...

热门文章

  1. 想了解Xtrabackup备份原理和常见问题分析,看这篇就够了
  2. 论文解读丨空洞卷积框架搜索
  3. 五大新品+两大黑科技,看华为云如何升级基础设施让用户“躺平”
  4. 【智简联接,万物互联】华为云·云享专家董昕:Serverless和微服务下, IoT的变革蓄势待发
  5. 【鲲鹏来了】鲲鹏迁移过程案例分享
  6. 设计模式笔记九:组合模式
  7. css开发语言,盘点5大主流CSS框架,你知道哪些
  8. LaTeX中巨算符下面输入两行内容的方法
  9. LaTeX学习经验与常用文档
  10. python代码_抢球鞋?预测股市走势?淘宝秒杀?Python表示要啥有啥 - 街角的守望。...