比较两个字符串的相似度,核心算法是用一个2维数组记录每个字符串是否相同,如果相同记为0,不相同记为1,每行,每列的相同个数累加,则数组最后一个数为不相同个数的总数。从而判断这两个字符串的相似度,在判断大小写时,没有区分大小写,即大小写视为相同的字符。

public class Demo
{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就是1if (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++){                       // 遍历strch1 = str.charAt(i - 1);// 去匹配targetfor (j = 1; j <= m; j++){ch2 = target.charAt(j - 1);if (ch1 == ch2 || ch1 == ch2+32 || ch1+32 == 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;}/*** 获取两字符串的相似度*/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){Demo lt = new Demo();String str = "中国";String target = "中hu";System.out.println("similarityRatio=" + lt.getSimilarityRatio(str, target)*100+"%");}
}

java两个字符串的重复率检查相关推荐

  1. 用java设计一个文件查重程序,输入两个文本文件,输出两个文本文件的重复率(最长公共子序列的应用)...

    你可以使用java代码来设计一个文件查重程序.首先,你需要读取两个文本文件的内容,将它们存储在字符串变量中.然后,你可以使用最长公共子序列(LCS)算法来计算两个字符串的重复率. LCS算法的实现方法 ...

  2. java两个字符串前缀_java – 找到两个字符串的最长公共前缀

    我想找到两个字符串的最长公共前缀. 有没有办法循环我的最后几个if语句,以便我可以结束彼此不匹配的最后几个字符? System.out.println("Enter the first st ...

  3. java两个字符串 相隔天数_关于Java: Joda-Time时间中两个日期之间的天数

    我如何找到两个joda time DateTime实例之间的天数差异?如果开始时间是星期一,结束时间是星期二,那么不管开始和结束日期的小时/分钟/秒是多少,返回值都应该是1. 如果从晚上开始到早上结束 ...

  4. java 两个数组去重复数据_Java实现数组去除重复数据的方法详解

    本文实例讲述了Java实现数组去除重复数据的方法.分享给大家供大家参考,具体如下: 前一段时间被面试问到:如果一个数组中有重复元素,用什么方法可以去重?一时间会想到用一种方法,但是后来查阅资料后发现, ...

  5. java两个字符串相等却总返回false

    因为在java里字符串属于对象,不可以直接比较.要使用equals() 例如 String password1=request.getParameter("password1"); ...

  6. java两个字符串 相隔天数,计算两个日期之间相隔天数

    直接上传代码: import java.util.Calendar; import java.text.SimpleDateFormat; import java.text.ParseExceptio ...

  7. 代码重复率检查工具jsinspect 检查重复代码,去掉冗余代码。

    jscpd jsinspect npm install -g jsinspect 检测复制粘贴和结构类似的JavaScript代码

  8. 代码重复率PHP,终端代码重复率检测实践

    背景 当一个项目在不断开发迭代.功能累加的过程中,重复代码的出现几乎是不可避免的.其出现的原因不外乎以下两点: 复制粘贴:这可能是造成代码重复的最大因素,其原因也有很多种,可能是跨项目的代码拷贝,可能 ...

  9. java 拼html_java字符串拼接的方法

    java字符串拼接的几种方式 String类的方法: ①利用运算符"+" ②public String concat(String str)进行字符串的拼接操作 StringBuf ...

  10. java reverse 怎么实现,java实现reverse字符串

    Java中reverse()的用法reverse()方法表示的是将一个输入流倒叙输出. 举例: StringBuffer sb =new StringBuffer("abcd"); ...

最新文章

  1. java 程序运行时注入方法_Spring入门(九):运行时值注入
  2. BGP 路由属性 公认必遵 ORIGIN
  3. python读取excel某一行-Python 读取csv的某行
  4. python爬虫赚钱的经历-聊一聊,这些年我用Python爬虫挣钱的那些事
  5. 【编译原理】构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 7.)(笔记)解释器 interpreter 解析器 parser 抽象语法树AST
  6. Socket.IO聊天室~简单实用
  7. 报名照片审核处理工具_太浦军考|2020年文职人员报名照片审核程序,照片处理工具应该如何使用?...
  8. 宏定义函数container_of的解释
  9. Django1.9开发博客06- 模板继承
  10. JQuery合并表格单元格
  11. SolarWinds2002使用说明(簡)
  12. python爬取小说项目概述_Python实战项目网络爬虫 之 爬取小说吧小说正文
  13. 客户端(前端)Ajax中Get请求和Post请求的区别
  14. CPP-week fourteen
  15. gsonformat插件_没用过这些IDEA插件?怪不得写代码头疼
  16. Python的is和==区别
  17. win开启审计功能_一项一项教你测等保2.0——Linux安全审计
  18. 如何不做老板手中一次性筷子?
  19. GIF微信表情如何制作
  20. DS18B20温度传感器c语言编程,单片机中使用DS18B20温度传感器C语言程序(参考7)(DS18B20 测...

热门文章

  1. 网上值得注册的论坛(最新整理)
  2. NHibernate Step by Step (三) Configuration和Sessionfactory
  3. ai跟随路径_AI教程:如何沿着对象的路径输入文字?
  4. 如何打造一个自动化的前端项目
  5. centos有道linux安装,centos7安装有道词典(不能发音和取词)
  6. BT宝塔面板关闭强制绑定手机注册
  7. 笔记本安装PCMCIA并口卡
  8. 各大公司的大数据质量监控平台
  9. tp5 根据身份证号码判断性别 男女
  10. 云上财务经营的成本管理