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. Spring AOP学习(六)

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  2. 【DIP, 图像增强】

    第四章 图像增强 图像增强是按特定的需要突出一幅图像中的某些信息,同时削弱或者去除某些不需要的信息的处理方法.其主要目的是使处理后的图像对某种特定的应用来说,比原始图像更加适用.因此这类处理是为了某种 ...

  3. idea中找不到maven projects的集中解决办法

    今天正常打开idea,却发现maven窗口找不到了:试了这些方法 首先idea自带了maven控件,不像Eclipse还需要下载控件,如果你以前有maven在右边,出于某种原因,消失找不到 了,你可以 ...

  4. Android layer-list:联合shape(2)

     Android layer-list:联合shape(2) 附录文章3简单说明了Android layer-list的用法,现在把Android layer-list联合shape做出一些特殊的 ...

  5. [luoguP1507] NASA的食物计划(DP)

    传送门 二位费用背包 ——代码 #include <cstdio> #include <iostream> int n, maxv, maxw; ][]; inline int ...

  6. [bzoj3289]Mato的文件管理_莫队_树状数组

    Mato的文件管理 bzoj-3289 题目大意:给定一个n个数的序列.m次询问:一段区间中的逆序对个数. 注释:$1\le n\,mle 5\cdot 10^4$. 想法: 开始想这个题的大佬们,给 ...

  7. Oracle创建表空间、用户名、密码步骤教程

    第一步,以最高级别 SYSDBA 身份登录数据库 cmd 进入命令行 登录方式一: C:\Documents and Settings\Administrator>sqlplus sys/sys ...

  8. ROBODK仿真如何设置运动速度

    设置工具-选项-运动,把仿真时间设置成跟正常一样   然后双击机器人,设置参数(可以设置movej和movel的速度,加速度)  

  9. effective C++ 读书笔记 条款14 以对象管理资源

    如果我们使用一个投资行为的程序库: #include "stdafx.h" #include <iostream> #include <memory> us ...

  10. Ubuntu下安装C/C++开发环境【!!!有更新!!!Ubuntu14.10下使用eclipse搭建C语言开发环境】

    (1)第一步安装Eclipse,有两种方法,使用软件市场搜索就可以得到,安装就可以 另外一种是使用终端安装,命令例如以下: sudo su进入root模式 输入password 然后 输入:sudo ...