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

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

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

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String str1 = in.next();
        String str2 = in.next();
        int lengthmax = 0;
        String laststr="";
        int flag;//滑动窗口大小
        int flag1;
        if(str1.length()<str2.length())
        {
            laststr = str1;
            str1 = str2;
            str2 = laststr;
        }
        lengthmax = str1.length();
        laststr="";
        for(int i=0;i<str2.length();){
            flag = 1;
            for(int j=0;j<str1.length()-flag;){
                flag1 = 0;
                if(str2.substring(i,i+flag).equals(str1.substring(j,j+flag))){
                    while(str2.substring(i,i+flag).equals(str1.substring(j,j+flag))){
                        flag++;
                        flag1 =1;
                        if(i+flag>str2.length()||j+flag>str1.length())
                            break;
                    }
                    if(flag1==1)
                        flag--;
                    j=j+flag;
                }
                else{
                    j++;
                }
                 // 长字符移位 + 
                if(flag>laststr.length())
                {laststr = str2.substring(i,i+flag);//记录此时的字符串 

                }
            }
            i=i+1;
        }
        System.out.println(laststr);
    }
}
全部评论

相关推荐

12-20 11:21
复旦大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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