java中求几个字符串的最大公共子串 使用了比较器Comparator
package com.swift; import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; public class Max_Substring_Test { public static void main(String[] args) { /*
* 几个字符串的最大公共子字符串
*/ String str1 = "eriousdfndnfdlk";
String str2 = "dkgfdkgkdjgdjgjksjgksgjsdkjsdierioe";
String str3 = "ldskfjdskierundsnfjerioejrejrheruer3j43j4hj3";
String sub; List<String> list=new ArrayList<String>(); for (int i = 0; i < str1.length(); i++) {
sub = str1.substring(0, i); if(str2.indexOf(sub)!=-1&&str3.indexOf(sub)!=-1) {
// System.out.println(sub);
list.add(sub);
}
} Collections.sort(list, new Comparator<String>() { @Override
public int compare(String arg0, String arg1) {
int i=arg1.length()-arg0.length();
return i;
} }); System.out.println("The max subString is "+list.get(0));
} }
上面方法中测试的子串都是从第一个字母开始的,所以并不完全,子串还有很多,还有从第二个字母开始,从第三个字母开始,等等的子字符串
所以,还应该再加一层循环,把substring(开始参数,结束参数)中开始和结束参数都设置为变量,开始参数从0开始到最后一个字母下标,结束参数起始位置要根据开始参数而定,否则会出现下标异常
package com.swift; import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; public class Max_Substring_Test { public static void main(String[] args) { /*
* 几个字符串的最大公共子字符串
*/ String str1 = "eriousdfndnfdlk";
String str2 = "dkgfdkgkdjgdjgjksjgksgjsdkjsdierioe";
String str3 = "ldskfjdskierundsnfjerioejrejrheruer3j43j4hj3";
String sub; List<String> list = new ArrayList<String>(); for (int i = 0; i < str1.length(); i++) {
for (int j = i; j < str1.length(); j++) {
System.out.println(sub = str1.substring(i, j+1)); if (str2.contains(sub)&& str3.contains(sub)) {
System.out.println(sub);
list.add(sub);
}
}
} Collections.sort(list, new Comparator<String>() { @Override
public int compare(String arg0, String arg1) {
int i = arg1.length() - arg0.length();
return i;
} }); System.out.println("The max subString is " + list.get(0));
} }
java中求几个字符串的最大公共子串 使用了比较器Comparator的更多相关文章
- Java中XML格式的字符串4读取方式的简单比较
Java中XML格式的字符串4读取方式的简单比较 1.java自带的DOM解析. import java.io.StringReader; import javax.xml.parsers.Docum ...
- JAVA中令人疑惑的字符串
Java中不同的字符串存在于同一个存储池中,字符串变量将指向存储池中相应的位置,也就是字符串变量里面包含的并不是字符串而是这个字符串对象的内存地址. String a = "123" ...
- java中求余%与取模floorMod的区别
初学java的时候接触的%这个符号 百分号? 求余? 取模? 我只知道不是百分号,好像是求余,听别人那叫求模运算符,跟求余一样,于是我便信了. 思考之后开始迷糊,然后经过多次考证得到以下结论. 首先, ...
- 使用java中replaceAll方法替换字符串中的反斜杠
今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: java.util.regex.Pa ...
- Java中各种集合(字符串类)的线程安全性!!!
Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...
- Java 中如何计算两个字符串时间之间的时间差?(单位为分钟)
Java 中如何计算两个字符串时间之间的时间差?(单位为分钟) import java.text.DateFormat; import java.text.ParseException; import ...
- java中使用SimpleDateFormat实现字符串和日期的相互转换
java中使用SimpleDateFormat实现字符串和日期的相互转换 import java.text.ParseException; import java.text.SimpleDateFor ...
- java中判断两个字符串是否相等的问题
我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写.在java中,用的是eq ...
- Java中String直接赋字符串和new String的区别
解析Java中的String对象的数据类型 1. String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ...
随机推荐
- codevs1105 过河
1105 过河 2005年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 在河上有一座独木桥,一 ...
- codevs 3162 抄书问题
3162 抄书问题 题目描述 Description 现在要把M本有顺序的书分给K个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比如 ...
- 剑指Offer的学习笔记(C#篇)-- 替换空格
题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 一 . 自己的想法 老实说,貌 ...
- Luogu P1558 色板游戏【线段树/状态压缩】By cellur925
题目传送门 今天非常想再看一遍霸王别姬想不进去题于是开始刷数据结构 注意到至多只有\(30\)种颜色,啊啊啊啊我一开始竟然想的不是状态压缩而是在线段树中存一个30大小的数组,这样每次更新的时候暴力循环 ...
- thinkPHP5 tablib标签库自定义方法
具体可以参照thinkphp\library\think\template\taglib\Cx.php这里面的写法我在common模块下新建了一个文件夹taglib,新建了一个Test.php文件 n ...
- 如何使用JAR文件重用JMeter代码并节省时间
在开发测试时,通常需要在测试中编写代码.此代码可能很长,可能会在多个测试中重复,或者可能仅针对特定测试编写.此外,如果要求发生变化,则在测试中编写的代码可能必须更改或补充. 这可能需要很长时间并且容易 ...
- 039 Combination Sum 组合总和
给一组候选数字(C)(没有重复)并给一个目标数字(T),找出 C 中所有唯一的组合使得它们的和为 T.可以从 C 无限次数中选择相同的数字.说明: 所有数字(包括目标)都是正整数. 解集合 ...
- feign客户端传参数报错
新手经常遇到的错误 Caused by: java.lang.IllegalStateException: Method has too many Body parameters feign多参数问题 ...
- Java基础学习_01 概述及环境配置
一.概述 1.Java语言平台版本 1.1J2SE(Java 2 Platform Standard Edition)标准版 为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可 ...
- [转]Todd.log - a place to keep my thoughts on programming 分布式架构中的幂等性
Todd.log - a place to keep my thoughts on programming 理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式. ...