package tek;

  Java算法——求出两个字符串的最长公共字符串

/**
* @Title: 问题:有两个字符串str1和str2,求出两个字符串中最长公共字符串。
* @author 匹夫(在YW的数据基础上再次延伸)
* @date 2017年4月19日 下午8:08:37
*/
public class Demo1 { /*
//减0 个字符 内循环1次
k2.substring(0, 7);//外循环第1次_内循环第1次
//减一个字符 内循环2次
k2.substring(0, 6);//外循环第2次_内循环第1次
k2.substring(1, 7);//外循环第2次_内循环第2次
//减两个字符 内循环3次
k2.substring(0, 5);// 外循环第3次_内循环第1次
k2.substring(1, 6);// 外循环第3次_内循环第2次
k2.substring(2, 7);// 外循环第3次_内循环第2次
//减3个字符 内循环4次
k2.substring(0, 4);// 外循环第4次_内循环第1次
k2.substring(1, 5);// 外循环第4次_内循环第2次
k2.substring(2, 6);// 外循环第4次_内循环第3次
k2.substring(3, 7);// 外循环第4次_内循环第4次
*/
public static void main(String [] args){
String k1 = "10101121018";
String k2 = "101210182";
String max = null;
String max_str = null;
String min_str = null;
if(k1.length()==k2.length()){
max_str = k1;
min_str = k2;
}else if(k1.length()>k2.length()){
max_str = k1;
min_str = k2;
}else{
max_str = k2;
min_str = k1;
}
int index = 0;
for(int x=min_str.length();x>=0;x--){
int b = x;
boolean flag = false;
for(int y=0;y<=min_str.length()-x;y++){
index++;
int v = y;
String wait_max = min_str.substring(v, b);
if(max_str.contains(wait_max)){
max = wait_max;
flag = true;
break;
}
b++;
}
if(flag){
break;
}
}
System.out.println(index);
System.out.println(max);
} }
String ms = "01012101121301";
String ds = "0121121301"; 0121121301 ms.contain(ds.substring(x,y));
x
思路2
10个字符1次
1 0121121301 10 ms.contain(ds.substring(0,10)); 9个字符串2次
2 012112130 9 ms.contain(ds.substring(0,9));
3 121121301 9 ms.contain(ds.substring(1,10)); 8个字符3次
4 01211213 8 ms.contain(ds.substring(0,8));
5 12112130 8 ms.contain(ds.substring(1,9));
6 21121301 8 ms.contain(ds.substring(2,10)); 7个字符4次
7 0121121 7 ms.contain(ds.substring(0,7));
8 1211213 7 ms.contain(ds.substring(1,8));
9 2112130 7 ms.contain(ds.substring(2,9));
10 1121301 7 ms.contain(ds.substring(3,10)); 思路1
String temp_max = 0121, int x = 0;
int y= 10;
ms.contain(ds.substring(x,y)); 1 0121121301 ms.contain(ds.substring(0,10));
2 012112130 ms.contain(ds.substring(0,9));
3 01211213 ms.contain(ds.substring(0,8));
4 0121121 ms.contain(ds.substring(0,7));
5 012112 ms.contain(ds.substring(0,6));
6 01211 ms.contain(ds.substring(0,5));
7 0121 ms.contain(ds.substring(0,4)); 8 121121301 ms.contain(ds.substring(1,10));
9 12112130 ms.contain(ds.substring(1,9));
10 1211213 ms.contain(ds.substring(1,8));
11 121121 ms.contain(ds.substring(1,7));
12 12112 ms.contain(ds.substring(1,6));
13 1211 ms.contain(ds.substring(1,5));
14 121 ms.contain(ds.substring(1,4)); 15 21121301 ms.contain(ds.substring(2,10));
16 2112130 ms.contain(ds.substring(2,9));
17 211213 ms.contain(ds.substring(2,8));
18 21121 ms.contain(ds.substring(2,7)); 19 1121301 ms.contain(ds.substring(3,10));

 

最新文章

  1. js图片拖放原理(很简单,不是框架,入门基础)
  2. SharePoint2010新特性:InfoPath定义创建列表的界面
  3. SharePoint Server 2010 中的基本任务
  4. iOS下json的解析 NSJSONSerialization
  5. nignx+php-fpm环境下 phpmyadmin打开空白的原因探究
  6. PowerDesigner Vs Enterprise Architect
  7. Swift: Initialization-2
  8. 201621123060《JAVA程序设计》第十周学习总结
  9. JavaScript sort() 方法
  10. 安装Leanote极客范的云笔记
  11. javascript弹出模态窗体
  12. Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:co
  13. 「PKUWC2018」随机游走(min-max容斥+FWT)
  14. Java -- POI -- 随笔汇总
  15. Spring的几种注入bean的方式
  16. C#正则表达式类Match和Group类的理解
  17. 使用.NetCore在Linux上写TCP listen 重启后无法绑定地址
  18. 用RotateDrawable实现网易云音乐唱片机效果
  19. ffmpeg把ts文件转m3u8并切片
  20. 提交到开源git时出现:fatal: refusing to merge unrelated histories的解决办法

热门文章

  1. 关于 CMSIS 标准 及 STM32F10x的固件库
  2. mybatis写当天 当月的数据 时间段数据https://www.cnblogs.com/xzjf/p/7600533.html
  3. python爬取数据保存到Excel中
  4. [bzoj 2705][SDOI2012]Longge的问题(数学)
  5. Spring Boot配置文件规则以及使用方法官方文档查找以及Spring项目的官方文档查找方法
  6. FreeMarker-简单示例
  7. linux 设置root可以远程登陆
  8. 登陆模块,这个是很重要的模块,有shiro和spring security专门的权限认证框架
  9. NETCore项目报错 An error occurred while starting the application
  10. docker国内镜像拉取和镜像加速registry-mirrors配置修改