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. 用记事本写第一个Java程序

    public class Welcome{ public static void main(String[] args){ System.out.println("我是尚学堂的高淇,很高兴认 ...

  2. 【Codeforces 9989C】A Mist of Florescence

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 四个大角 然后每个大角里面包着一些其他颜色的就好 [代码] #include <bits/stdc++.h> using name ...

  3. MongoDB增加用户、删除用户、修改用户读写权限及只读权限(注:转载于http://www.2cto.com/database/201203/125025.html)

    MongoDB  增加用户 删除用户  修改用户  读写权限 只读权限,   MongoDB用户权限分配的操作是针对某个库来说的.--这句话很重要.   1. 进入ljc 数据库:       use ...

  4. 简单svg动画

    一.将svg嵌入到html中 svg是指可伸缩矢量图形,它使用XML格式定义图像.在html中可以使用<svg>标签直接嵌入svg代码,例如: <svg version=" ...

  5. codevs1197 Vigenère密码

    题目描述 Description 16 世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法——Vigenère密码.Vigenère 密码的加密解密算法简单易用,且破译难度比 ...

  6. 洛谷—— P3385 【模板】负环

    题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 ...

  7. poj——2891 Strange Way to Express Integers

    Strange Way to Express Integers Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 16839 ...

  8. 多Tabs的横向滚动插件(支持Zepto和jQuery)

    一. 效果图 二. 功能介绍 1. 支持横向移动 2. 支持点击Tab后该Tab居中 3. 拉到最左边和最右边后依然可以拉动,只是tabs的移动距离变小. 三. 使用说明 1. 在你的html中添加T ...

  9. Windows 9立即公布了

    Windows 9技术预览版可能于今晚在美国旧金山举办的Windows公布会上宣布.下一代的Windows名称最有可能是Windows或Windows 9.网友猜想也可能是WIndows X或Wind ...

  10. Ubuntu14 中安装 VMware10 Tools工具&lt;2&gt;

    网上说已经针对上一篇提到的无法显示共享文件夹的问题做了补丁.补丁地址是https://github.com/rasa/vmware-tools-patches,我没有成功,还是出现"hgfs ...