找出两个字符的最大子串

简介: package cn.ic; //要求:找出两个字符串中的最大子串,即最大的交集。如:"udappyzk"和"xzhappymol"最大子串为appy //步骤: //1 找出两个字符串中的较短者 //2 分别将较短子串除去0,1,2,3...
package cn.ic;
//要求:找出两个字符串中的最大子串,即最大的交集。如:"udappyzk"和"xzhappymol"最大子串为appy
//步骤:
//1 找出两个字符串中的较短者
//2 分别将较短子串除去0,1,2,3,4……个元素,且判断除去X个元素后的子串是否在较长字符串中出现
//分析:
//以题目中较短字符串"udappyzk"为例
//(1)去除0个元素的情况,有1种操作,得到本身字符串作为最大子串
//(2)去除1个元素的情况,有2种操作,即分别去除第一个和最后一个得到dappyzk和udappyz
//(3)去除2个元素的情况,有3种操作,即去掉头两个和去掉尾两个和头尾各去一个即得到appyzk和udappy和dappyz
//(4)去除3个元素的情况,有4种操作,即去掉头三个和去掉尾三个和头去一个尾去两个和头去两个尾一个
//                               即ppyzk和udapp和dappy和appyz
//综上分析:
//1 去除N个元素,共有N+1种可能
//2 头去元素个数+尾去元素个数=N
//举例子:当要去掉3个元素时,我们分别看左右去掉的个数
//左 +右=N
//3 +0 =3
//0 +3 =3
//1 +2 =3
//2 +1 =3
//调整变形可得:
//0 +3 =3
//1 +2 =3
//2 +1 =3
//3 +0 =3
//这样便推知核心算法:
//第一个for语句(外层for语句)表示要去掉几个元素
//第二个for语句(内层for语句)表示如何去除元素
public class MaxSubString {
	public static void main(String[] args) {
         String s="udappyzk";
         String l="xzhappymol";
         FindMaxSubString findMaxSubString=new FindMaxSubString();
         System.out.println("最大子串="+findMaxSubString.search(s, l));
	}
}
class FindMaxSubString{
	public String search(String string1,String string2){
		String longer;
		String shorter;
		String result=null;
		String tempString=null;
		if(string1.length()>=string2.length()){
			longer=string1;
			shorter=string2;
		}else{
			longer=string2;
			shorter=string1;
		}
		for(int sh=0;sh<shorter.length();sh++){//核心算法
			for(int x=0;x<=sh;x++){
				tempString=shorter.substring(x, shorter.length()-sh+x);//核心语句shorter.length()-(sh-x)
				if(longer.indexOf(tempString)!=-1){
					result=tempString;
					return result;
				}
			}
		}
		return result;
	}
}

相关文章
|
4月前
|
存储
【字符串】最长不含重复字符的子字符串
【字符串】最长不含重复字符的子字符串
|
3月前
|
C#
C# 中的字符与字符串
C# 中的字符与字符串
|
4月前
|
自然语言处理
字符范围
字符范围
78 2
strstr的学习与使用及实现/查找字符串中的字符
strstr的学习与使用及实现/查找字符串中的字符
66 0
|
测试技术 索引
根据首尾字符串截取中间字符串
今天分享一个函数:虽然它非常简单,但是真的很好用!也很常用!比如 “我今天真的很高兴” 这句话,要把 `今天` 截取出来,我们可以直接调用函数拿到结果,不需要匹配索引、也不用写正则!
69 0
|
算法
KMP 算法:快速匹配字符字串
KMP 算法主要是在一定长度的字符串中快速匹配出所需的目标字符串,也称模式字串,最大特点就是讲究一个快字。
99 0
KMP 算法:快速匹配字符字串
|
JavaScript 前端开发 索引
查找字符串中的字符串
查找字符串中的字符串
77 0
在一个由小写英文字母(a-z)组成的字符串中,查找最短子串,其头尾字母相同。输出最左边的该类子串。
在一个由小写英文字母(a-z)组成的字符串中,查找最短子串,其头尾字母相同。输出最左边的该类子串。
61 0