题解 | #公共子串计算#

公共子串计算

http://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b

题目:输入两个字符串,判断两者之间最大的公共子串,即重复最多的字符的长度;
1 首先,从用户输入得到两个字符串,并保证不管用户如何输入,代码都能固定一个长的和一个短的串;

Scanner sc = new Scanner(System.in);
String s1= sc.nextLine();
String s2 = sc.nextLine();
//定义两个变量,固定长串和短串
String lStr=s1.length()>s2.length()?s1:s2;
String sStr=s1.length()<s2.length()?s1:s2;

2 最终是要求重复最多的字符,那么可以想到遍历短串,一段一段截取,放到长串中去看是否包含,若包含的话,取最长的那个串

//遍历短串 从第一个字符 慢慢到最后的字符
for(int i=0;l<sStr.length();i++){
    for(int j =i+1;j<=sStr.length();j++){
        //一段段截取
        String sub = sStr.subString(i,j);
        //匹配
        if(lStr.contains(sub)){
            max=sub.length()>max?sub.length:max;
        }
    }
}
//最后输出最多重复的字符的长度
System.out.println(max);
全部评论
第二层循环,如果用递减,一旦包含,给max赋三木表达式之后接着就能break当前的内层循环了,这样会不会快一点
点赞 回复 分享
发布于 2021-11-10 19:07

相关推荐

01-07 07:54
已编辑
门头沟学院 前端工程师
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务