获取两个字符串中最大的相同子串

package String;

/* 原理:将较小的字符串看做是最大长度的子串,然后将较小的字符串和和较大的字符串比较,如果不是,将较小的字符串长度减一再比较,依次减一,比较

第1次  abcdefg               比较这 7 位是否是最大子串

第2次  bcdefg   abcdef    比较这 6 位是否是最大子串

第3次  bcdef    abcde  bcdef     5



*/

//.获取两个字符串中最大的相同子串
public class MAXString {
public static void main(String[] args) {
String a="abcdefg";
   String b="123abc456";

   for(int i=0;i<a.length();i++) {    //控制有多少个长度的串

             //组合当前次数的字符串 ,比如 第3次,5个字符, bcdef    abcde  bcdef  3 种组合 

for(int j=0,k=a.length()-i;k!=a.length()+1;j++,k++) {  //j,k分别代表subString(beginIndex,endIndex),k=a.length-i是因为第一次,k=a.length,第二次,k=a.length-1,....

//k!=a.length+1是因为:例如第3次,如果后面的索引 k=g 的后一位,那就不能组成5个字符了。

    String temp=a.substring(j, k);
    if(b.contains(temp)) {
    System.out.println(temp);
    return;
    }
    }
   }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值