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));

 

java_基础知识_字符串练习题_计算两个字符串的最长公共字串长度的更多相关文章

  1. (字符串)最长公共字串(Longest-Common-SubString,LCS)

    题目: 给定两个字符串X,Y,求二者最长的公共子串,例如X=[aaaba],Y=[abaa].二者的最长公共子串为[aba],长度为3. 子序列是不要求连续的,字串必须是连续的. 思路与代码: 1.简 ...

  2. poj 3080 kmp求解多个字符串的最长公共字串,(数据小,有点小暴力 16ms)

    Blue Jeans Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14113   Accepted: 6260 Descr ...

  3. Levenshtein Distance + LCS 算法计算两个字符串的相似度

    //LD最短编辑路径算法 public static int LevenshteinDistance(string source, string target) { int cell = source ...

  4. 利用编辑距离(Edit Distance)计算两个字符串的相似度

    利用编辑距离(Edit Distance)计算两个字符串的相似度 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可 ...

  5. Java计算两个字符串日期之间的天数差

    Java计算两个字符串日期之间的天数差 调用方法: public static void main(String[] args) throws ParseException { String a = ...

  6. 算法 - 给出一个字符串str,输出包含两个字符串str的最短字符串,如str为abca时,输出则为abcabca

    今天碰到一个算法题觉得比较有意思,研究后自己实现了出来,代码比较简单,如发现什么问题请指正.思路和代码如下: 基本思路:从左开始取str的最大子字符串,判断子字符串是否为str的后缀,如果是则返回st ...

  7. C# 计算两个字符串的相似度

    我们在做数据系统的时候,经常会用到模糊搜索,但是,数据库提供的模糊搜索并不具备按照相关度进行排序的功能. 现在提供一个比较两个字符串相似度的方法. 通过计算出两个字符串的相似度,就可以通过Linq在内 ...

  8. PAT 甲级 1040 Longest Symmetric String (25 分)(字符串最长对称字串,遍历)

    1040 Longest Symmetric String (25 分)   Given a string, you are supposed to output the length of the ...

  9. [19/05/25-星期六] JavaScript_ 基础知识和基本语法_数据类型

    一.概念 诞生于1995年,刚开始主要用于处理网页中的前端验证(指的是检查用户输入的内容是否符合一定的规则,比如用户名的长度.密码的长度.邮箱格式等). 前身是网景公司的LiveScript语言,傍的 ...

随机推荐

  1. 【codeforces 707C】Pythagorean Triples

    [题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...

  2. QT .pro文件的学习收获

    1. 载pro文件预定义宏: CONFIG(debug,debug|release){ DEFINES+=__DEBUG__ }else{ DEFINES+=__RELEASE__ macx:DEST ...

  3. 试来试去,WIN下最简单的WIN API开发工具,Pelles C就好啦

    昨晚试过N个,不是太大,就是不容易和WIN API集成. 今早一试就灵了个.... Pelles C. Pelles C是一款windows下的C IDE,支持调试,且为免费.它有一个高效率的链接器, ...

  4. Ubuntu 16.04安装搜索拼音输入法

    Linux下唯一一款大厂出的输入法 1.下载 http://pinyin.sogou.com/linux/?r=pinyin 2.安装 sudo dpkg -i sogoupinyin_2.1.0.0 ...

  5. Spring Cloud ZooKeeper集成Feign的坑1,错误:Consider defining a bean of type 'org.springframework.web.client.RestTemplate' in your configuration.

    错误如下: ERROR 31473 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** A ...

  6. Eclipse查看方法/类调用的方法

    1.(首推)双击选中该方法/类,[Ctrl]+[Alt]+[H](Open Call Hierarchy) 2.(次推)选中该方法/类,[Ctrl]+[Shift]+[G](References) 3 ...

  7. Android抽屉菜单DrawerLayout的实现案例

    (1)项目布局文件 activity_main.xml <android.support.v4.widget.DrawerLayout xmlns:android="http://sc ...

  8. 利用 gnuplot_i 在你的 c 程序中调用 GNUPLOT

    这是一篇非常早曾经写的小文章,最初发表于我的搜狐博客(2008-09-23 22:55).由于自从转移到这里后,sohu 博客就不再维护了,所以把这篇文章也一起挪了过来. GNUPLOT 是一款功能强 ...

  9. linux 磁盘性能监控

    linux下对于查看进程的命令非常多也非常强大.经常使用的如:ps  top 可是在磁盘性能监控方面就没有那么统一了. 以下列举一些磁盘监控命令.此处仅仅是起到抛砖引玉作用,具体使用參数请參考man手 ...

  10. intellij idea 写 Helloworld

    http://www.jetbrains.com/idea/webhelp/creating-and-running-your-first-java-application.html Creating ...