题解 | #查找两个字符串a,b中的最长公共子串#

查找两个字符串a,b中的最长公共子串

https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506

import java.util.Scanner;

// medium 双指针:
// 1. 先定义较短字符串a和较长字符串b。
// 2. 通过判断b是否包含a的子串,来查找最长公共子串
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String aa=in.next();
        String bb=in.next();
        String a=aa.length()<bb.length()?aa:bb;
        String b=aa.length()<bb.length()?bb:aa;
        int left=0;
        int right=1;
        String res="",sub="";
        int max_len=0;
        int a_len=a.length(),b_len=b.length();
        while(right<=a_len){    //右指针的最大值是a的最后一个元素
            sub=a.substring(left,right);
            if(b.contains(sub)){ 
                if(sub.length()>max_len){   //记录最大长度和子串;
                    max_len=sub.length();
                    res=sub;
                }
                right++;    //如果b包含子串,右指针继续右移,以寻求更长的子串。
            }else{
                left++;     //如果b不包含,左指针左移,右指针左指针处开始(最小长度开始)
                right=left+1;
            }
        }
        System.out.println(res);
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
08-14 22:16
我爱加瓦233:今年行情真的好起来了,暑期实习拿了美团,京东,饿了么三家的Offer,最终去了美团,披上了我的黄马褂,开启送外卖之旅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务