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

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

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

import java.util.*;
import java.lang.*;
public class Main{
     public static void main(String[] args){
         Scanner sc = new Scanner(System.in);
         //获取str1的所有子串  在str2中查找
         //记录最大长度  子串index
         String s = sc.nextLine();
         String l = sc.nextLine();
         if(s.length()>l.length()){
             String temp = s;
             s = l;
             l = temp;//后输出的短  则  交换
         }
         ArrayList<String> list = new ArrayList<String>();
         list = getAllChild(s);//取出短串的 子串
         int maxlen = 0;
         int maxindex = 0;
         for(int i = 0;i < list.size();i++){
             if(l.contains(list.get(i)) && list.get(i).length() > maxlen){//长串中存在它 且  长度大于最大
                 //只取大于  所以 会保证  串的先后顺序  因为串是按先后顺序存储的
                 maxlen = list.get(i).length();
                 maxindex = i;
             }
         }
         System.out.println(list.get(maxindex));

     }
    public static ArrayList<String> getAllChild(String str){//取出所有的子串
        ArrayList<String> list = new ArrayList<String>();
        for(int i = 1; i <=str.length();i++){
            for(int j = 0;j<str.length()-i+1;j++){
                list.add(str.substring(j,j+i));
            }
        }
        return list;
    }
    
}

全部评论

相关推荐

10-06 12:46
门头沟学院 Java
跨考小白:定时任务启动
点赞 评论 收藏
分享
牛客279957775号:铁暗恋
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务