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. ...
随机推荐
- 51nod1127(尺取法)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1127 题意:中文题诶- 思路:尺取法 维护一个队列,若当前队 ...
- 前端js模糊搜索(模糊查询)
1.html结构: <label for="searchShop" class="clear pos-a" style="top:17px;&q ...
- git配置命令
一.Git安装及密钥的生成 1.下载Git软件:http://msysgit.github.io/ 2.桌面右键 Git Bash Here 打开git命令行: 3.ssh-keygen -t rsa ...
- SpringBoot2.0 基础案例(03):配置系统全局异常映射处理
一.异常分类 这里的异常分类从系统处理异常的角度看,主要分类两类:业务异常和系统异常. 1.业务异常 业务异常主要是一些可预见性异常,处理业务异常,用来提示用户的操作,提高系统的可操作性. 常见的业务 ...
- 不使用三方包时,如何在ThinkSNS中建立优雅的用户权限管理
什么是ThinkSNS ? ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+(简称TS+).Thin ...
- Domination
题目链接 #include <bits/stdc++.h> using namespace std; typedef long long ll; inline ll read(){ , f ...
- [题解](组合数学/gcd)luogu_P3166数三角形
首先转化为ans=所有的组合方式 - 在同一水平/竖直线上 - 在同一斜线上 主要考虑在同一斜线上的情况 首先想到枚举斜率然后在坐标系内平移,以(0,0)为起点,每条线上的点数应该是gcd(x,y)比 ...
- LVM逻辑卷基本概念以及相关操作
一.LVM概念 LVM(Logical Vloume Manager):它是linux环境下对磁盘进行管理的一种机制,正常挂载的磁盘在磁盘资源快要耗尽时,无法动态拉伸增加资源,或由于特殊情况需要动态缩 ...
- ES6新特性使用小结(三)
九.数据类型 Symbol /* * Symbol 数据类型 概念: Symbol 提供一个独一无二的值 * */ { let a1 = Symbol(); let a2 = Symbol(); co ...
- storm maven-shade-plugin
storm-core pom <plugin> <groupId>org.apache.maven.plugins</groupId> <artifact ...