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

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

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

import java.io.IOException; 
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader in = new BufferedReader(new InputStreamReader (System.in));
        String str1, str2;
        while((str1 = in.readLine()) != null && (str2 = in.readLine()) != null) {
           
            //确保str1最短
            if(str1.length() > str2.length()){
                String tem = str1;
                str1 = str2;
                str2 = tem;
            }

            //初始化操作
            char[] ch1 = str1.toCharArray();
            char[] ch2 = str2.toCharArray();
            int maxLen = 0;
            String res = "";

            //双重循环找最长
            for(int i = 0; i < ch1.length; ++i) {
                for(int j = 0; j < ch2.length; ++j) {
                    int maxTem = 0;
                    int t1 = i;
                    int t2 = j;
                    while(ch1[t1] == ch2[t2]) {
                        ++t1;
                        ++t2;
                        ++maxTem;
                        if(t1 == ch1.length || t2 == ch2.length) break;
                    }
                    if(maxTem > maxLen) {//只有当前字串比原来字串长,才将字串记录于其中
                        maxLen = maxTem;
                        res = str1.substring(i, t1);
                    }
                }
            }
            System.out.println(res);
        }
    }
}

全部评论

相关推荐

饿魔:你这为什么gap了半年啊
点赞 评论 收藏
分享
02-26 01:13
集美大学 Java
点赞 评论 收藏
分享
LZHR:老哥你从投递简历测评完到一面中间隔了多久呀,我这边已经过了五天了仍显示简历筛选中是不是就是挂了
腾讯求职进展汇总
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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