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的更多相关文章

  1. Java中XML格式的字符串4读取方式的简单比较

    Java中XML格式的字符串4读取方式的简单比较 1.java自带的DOM解析. import java.io.StringReader; import javax.xml.parsers.Docum ...

  2. JAVA中令人疑惑的字符串

    Java中不同的字符串存在于同一个存储池中,字符串变量将指向存储池中相应的位置,也就是字符串变量里面包含的并不是字符串而是这个字符串对象的内存地址. String a = "123" ...

  3. java中求余%与取模floorMod的区别

    初学java的时候接触的%这个符号 百分号? 求余? 取模? 我只知道不是百分号,好像是求余,听别人那叫求模运算符,跟求余一样,于是我便信了. 思考之后开始迷糊,然后经过多次考证得到以下结论. 首先, ...

  4. 使用java中replaceAll方法替换字符串中的反斜杠

    今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: java.util.regex.Pa ...

  5. Java中各种集合(字符串类)的线程安全性!!!

    Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...

  6. Java 中如何计算两个字符串时间之间的时间差?(单位为分钟)

    Java 中如何计算两个字符串时间之间的时间差?(单位为分钟) import java.text.DateFormat; import java.text.ParseException; import ...

  7. java中使用SimpleDateFormat实现字符串和日期的相互转换

    java中使用SimpleDateFormat实现字符串和日期的相互转换 import java.text.ParseException; import java.text.SimpleDateFor ...

  8. java中判断两个字符串是否相等的问题

    我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写.在java中,用的是eq ...

  9. Java中String直接赋字符串和new String的区别

    解析Java中的String对象的数据类型 1. String是一个对象.  因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ...

随机推荐

  1. 1366 - Incorrect string value:'\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' a 错误修改

    把name的字符集修改成 utf8 ,然后把表关了从新打开,就可以了 如果还不行,就从新创表,在创表的时候修改name的字符集 如果还不行,就修改my.ini 它在你的mysql安装路径里 [mysq ...

  2. SpringMVC入门 bug集锦X2

    package cn.itcast.converter; import org.springframework.core.convert.converter.Converter; import jav ...

  3. Mysql 5.7主主复制配置

    MySQL5.7主主复制配置 主机1IP:192.168.1.2主机2IP:192.168.1.4 一.首先安装MySQL 5.71.卸载两台主机系统中已经有的mysql相关软件包rpm -qa | ...

  4. redis之进阶

    redis之进阶   redis redis介绍 redis的功能特性 1,高速读写 2,数据类型丰富 3,支持持久化 4,多种内存分配及回收策略 5,支持事务 6,消息队列.redis用的多的还是发 ...

  5. 15 Puzzle LightOJ - 1121

    https://cn.vjudge.net/problem/LightOJ-1121 #include<cstdio> #include<algorithm> #include ...

  6. api接口测试工具和接口文档管理工具

    api接口测试工具和接口文档管理工具 1.postman(https://www.getpostman.com) Postman 是一个很强大的 API调试.Http请求的工具.她可是允许用户发送任何 ...

  7. windows 2008 r2或win7安装SP1补丁,安装sqlserver 2012

    说明:安装sql server 2012时,win7和win2008r2系统都需要打sp1补丁. 1.SP1补丁下载地址(建议用迅雷下载): http://download.microsoft.com ...

  8. Spring MVC 示例

    Srping MVC项目结构如下: 一.首先创建一个Dynamic Web Project 二.WebContent/WEB-INF/文件夹下新增 web.xml,配置servlet 容器对于web. ...

  9. 【翻译转载】【官方教程】Asp.Net MVC4入门指南(6):验证编辑方法和编辑视图

    本节中,您将开始修改为电影控制器所新加的操作方法和视图.然后,您将添加一个自定义的搜索页. 在浏览器地址栏里追加/Movies, 浏览到Movies页面.并进入编辑(Edit)页面. Edit(编辑) ...

  10. 【转】说说Runnable与Callable

    说说Runnable与Callable   Callable接口:   Runnable接口: 相同点: 两者都是接口:(废话) 两者都可用来编写多线程程序: 两者都需要调用Thread.start( ...