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

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

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        String[] strs = new String[2];
        int index = 0;

        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String str = in.nextLine();
            strs[index] = str;
            if(index == 1){
                break;
            }        
            index ++;
        }

        String result = findMaxChildString(strs[0],strs[1]);

        System.out.println(result);

    }

    public static String findMaxChildString(String str1, String str2){
        String result = "";

        if ( str1.length() > str2.length() ){
            String temp = str1;
            str1 = str2;
            str2 = temp;
        }

        for ( int i = 0; i < str1.length(); i++ ){

            for ( int j = i+1; j <= str1.length(); j++ ){

                String curStr = str1.substring(i,j);

                if( str2.contains(curStr) ){
                    if (curStr.length() > result.length()){
                        result = curStr;
                    }
                }else {
                    break;
                }

            }

        }

        return result;
    }

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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