Java 获取两个字符串的最大子串

public class getMaxSubstring {

	/**
	 *获取两个字符串的相同的最大子串
	 */
	public static void main(String[] args) {
		
		String s2="nbasfhdnbajdnbaaanb";
		String s1="asdinbajdaab";
		String s;
		s=getMaxSubString(s1,s2);
		System.out.println(s);
		
		}

	public static String getMaxSubString(String s1, String s2) {
		
		String max=(s1.length()>s2.length())?s1:s2;
		String min=(max.equals(s1))?s2:s1;//保持s1是大字符串,s2是小字符串
		if(max.contains(min)){//如果s2本身就是两者的最大子串,则返回s2本身
			return min;
		}
		for(int i=0;i<min.length();i++){//进行s2.length()次循环匹配查找,
			for(int a=0,b=min.length()-i;b!=min.length()+1;a++,b++){//每次查找,都是从小字符串的起始位置查找,
				//a,b代表的是每次查找时的从小字符串中截取的子串的起始位置和末尾位置+1,每次查找将小字符串s2进行取子串,然后再将该子串与s1匹配,看看是s1否包含该子串。
				
				String sub=min.substring(a, b);
						if(max.contains(sub)){
					return sub;
				}
			}
			
		}
		return null;
	}

}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值