java两个字符串的重复率检查
比较两个字符串的相似度,核心算法是用一个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两个字符串的重复率检查相关推荐
- 用java设计一个文件查重程序,输入两个文本文件,输出两个文本文件的重复率(最长公共子序列的应用)...
你可以使用java代码来设计一个文件查重程序.首先,你需要读取两个文本文件的内容,将它们存储在字符串变量中.然后,你可以使用最长公共子序列(LCS)算法来计算两个字符串的重复率. LCS算法的实现方法 ...
- java两个字符串前缀_java – 找到两个字符串的最长公共前缀
我想找到两个字符串的最长公共前缀. 有没有办法循环我的最后几个if语句,以便我可以结束彼此不匹配的最后几个字符? System.out.println("Enter the first st ...
- java两个字符串 相隔天数_关于Java: Joda-Time时间中两个日期之间的天数
我如何找到两个joda time DateTime实例之间的天数差异?如果开始时间是星期一,结束时间是星期二,那么不管开始和结束日期的小时/分钟/秒是多少,返回值都应该是1. 如果从晚上开始到早上结束 ...
- java 两个数组去重复数据_Java实现数组去除重复数据的方法详解
本文实例讲述了Java实现数组去除重复数据的方法.分享给大家供大家参考,具体如下: 前一段时间被面试问到:如果一个数组中有重复元素,用什么方法可以去重?一时间会想到用一种方法,但是后来查阅资料后发现, ...
- java两个字符串相等却总返回false
因为在java里字符串属于对象,不可以直接比较.要使用equals() 例如 String password1=request.getParameter("password1"); ...
- java两个字符串 相隔天数,计算两个日期之间相隔天数
直接上传代码: import java.util.Calendar; import java.text.SimpleDateFormat; import java.text.ParseExceptio ...
- 代码重复率检查工具jsinspect 检查重复代码,去掉冗余代码。
jscpd jsinspect npm install -g jsinspect 检测复制粘贴和结构类似的JavaScript代码
- 代码重复率PHP,终端代码重复率检测实践
背景 当一个项目在不断开发迭代.功能累加的过程中,重复代码的出现几乎是不可避免的.其出现的原因不外乎以下两点: 复制粘贴:这可能是造成代码重复的最大因素,其原因也有很多种,可能是跨项目的代码拷贝,可能 ...
- java 拼html_java字符串拼接的方法
java字符串拼接的几种方式 String类的方法: ①利用运算符"+" ②public String concat(String str)进行字符串的拼接操作 StringBuf ...
- java reverse 怎么实现,java实现reverse字符串
Java中reverse()的用法reverse()方法表示的是将一个输入流倒叙输出. 举例: StringBuffer sb =new StringBuffer("abcd"); ...
最新文章
- java 程序运行时注入方法_Spring入门(九):运行时值注入
- BGP 路由属性 公认必遵 ORIGIN
- python读取excel某一行-Python 读取csv的某行
- python爬虫赚钱的经历-聊一聊,这些年我用Python爬虫挣钱的那些事
- 【编译原理】构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 7.)(笔记)解释器 interpreter 解析器 parser 抽象语法树AST
- Socket.IO聊天室~简单实用
- 报名照片审核处理工具_太浦军考|2020年文职人员报名照片审核程序,照片处理工具应该如何使用?...
- 宏定义函数container_of的解释
- Django1.9开发博客06- 模板继承
- JQuery合并表格单元格
- SolarWinds2002使用说明(簡)
- python爬取小说项目概述_Python实战项目网络爬虫 之 爬取小说吧小说正文
- 客户端(前端)Ajax中Get请求和Post请求的区别
- CPP-week fourteen
- gsonformat插件_没用过这些IDEA插件?怪不得写代码头疼
- Python的is和==区别
- win开启审计功能_一项一项教你测等保2.0——Linux安全审计
- 如何不做老板手中一次性筷子?
- GIF微信表情如何制作
- DS18B20温度传感器c语言编程,单片机中使用DS18B20温度传感器C语言程序(参考7)(DS18B20 测...