当前位置: 首页 > news >正文

java字符相似_java字符串相似度算法

本文实例讲述了java字符串相似度算法。分享给大家供大家参考。具体实现方法如下:

public class Levenshtein {

private int compare(String str, String target) {

int d[][]; // 矩阵

int n = str.length();

int m = target.length();

int i; // 遍历str的

int j; // 遍历target的

char ch1; // str的

char ch2; // target的

int temp; // 记录相同字符,在某个矩阵位置值的增量,不是0就是1

if (n == 0) {

return m;

}

if (m == 0) {

return n;

}

d = new int[n + 1][m + 1];

for (i = 0; i <= n; i++) { // 初始化第一列

d[i][0] = i;

}

for (j = 0; j <= m; j++) { // 初始化第一行

d[0][j] = j;

}

for (i = 1; i <= n; i++) { // 遍历str

ch1 = str.charAt(i - 1);

// 去匹配target

for (j = 1; j <= m; j++) {

ch2 = target.charAt(j - 1);

if (ch1 == ch2) {

temp = 0;

} else {

temp = 1;

}

// 左边+1,上边+1, 左上角+temp取最小

d[i][j] = min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + temp);

}

}

return d[n][m];

}

private int min(int one, int two, int three) {

return (one = one < two ? one : two) < three ? one : three;

}

/**

* 获取两字符串的相似度

*

* @param str

* @param target

*

* @return

*/

public float getSimilarityRatio(String str, String target) {

return 1 - (float) compare(str, target) / Math.max(str.length(), target.length());

}

public static void main(String[] args) {

Levenshtein lt = new Levenshtein();

String str = "ab";

String target = "ac";

System.out.println("similarityRatio=" + lt.getSimilarityRatio(str, target));

}

}

希望本文所述对大家的Java程序设计有所帮助。

相关文章:

  • java反编译工具jadclipse_java反编译工具jad及jadclipse
  • java watch service_Java WatchService API 教程
  • deepin 15.4 mysql_Deepin 15.4 编译安装 LNMP(PHP 5.6.31 + Nginx 1.12.1 + MySQL 5.6.36)
  • java if else嵌套_替代嵌套If Else语句
  • oom java问题_Java OOM问题如何排查
  • java 视图对象_java – 从不同资源创建视图对象的最佳方法(模式?)
  • java where函数_CONSTRUCT / WHERE中的SPARQL函数
  • mysql上机考试_SQL上机试题及步骤
  • 2d unity 多物体 射线_Unity 2D射线与 3D射线 UI射线
  • java数据如何显示在HTML界面_ajax接收后台数据在html页面显示
  • java mqtt broker_mqtt broker集合
  • notes 发邮件was配置java_Java程序调用LotusNotes邮件服务发送邮件的实现
  • java this 逸出_this引用逸出
  • java单机多核怎么实现的_JAVA实现对于多核CPU的OS满足CPU使用率在50%左右以及实现CPU使用率为正弦曲线-Go语言中文社区...
  • java序列化第二次出错_1.2.28反序列化类bug java.lang.VerifyError:
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • canvas 高仿 Apple Watch 表盘
  • Git的一些常用操作
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaScript HTML DOM
  • Linux各目录及每个目录的详细介绍
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Terraform入门 - 1. 安装Terraform
  • Tornado学习笔记(1)
  • Vue.js源码(2):初探List Rendering
  • VuePress 静态网站生成
  • Webpack 4x 之路 ( 四 )
  • Xmanager 远程桌面 CentOS 7
  • 阿里云Kubernetes容器服务上体验Knative
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 官方解决所有 npm 全局安装权限问题
  • 记一次用 NodeJs 实现模拟登录的思路
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 浅谈web中前端模板引擎的使用
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 小李飞刀:SQL题目刷起来!
  • 新手搭建网站的主要流程
  • 原生 js 实现移动端 Touch 滑动反弹
  • 7行Python代码的人脸识别
  • Java数据解析之JSON
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​ssh免密码登录设置及问题总结
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #{} 和 ${}区别
  • $jQuery 重写Alert样式方法
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (十一)c52学习之旅-动态数码管
  • (转)Linux下编译安装log4cxx
  • (转)Windows2003安全设置/维护
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .java 9 找不到符号_java找不到符号
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .net的socket示例