题解 | #最长公共子串#

最长公共子串

http://www.nowcoder.com/practice/f33f5adc55f444baa0e0ca87ad8a6aac

import java.util.*;


public class Solution {
    /**
     * longest common substring
     * @param str1 string字符串 the string
     * @param str2 string字符串 the string
     * @return string字符串
     */
    public String LCS (String str1, String str2) {
        int start = 0;
        int end = 1; //初始条件:subString(0, 1),左闭右开,即只取第一个第0个字符
        String result = "";
        while(end <= str2.length()){ //subString左闭右开,所以可以取到等于
            String subStr = str2.substring(start, end);
            if(str1.contains(subStr)){
                result = subStr; // str1包含str2的该子串,例如:ab,继续右移看是否继续包含abc,所以end右移
            }else{
                start++; //str1不包含str2的该子串,例如:13,不必再找以13开头的子串了,因为不包含13,肯定也不包含134,所以start右移;因为需要找最长子串,start右移后,end也需要右移,保证长度不会缩短
            }
            end++; //上述两种情况,均需要end右移
        }
        return result;
    }
}
全部评论
这么多看下来 你这个最好理解
点赞 回复 分享
发布于 2022-04-12 13:42

相关推荐

zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 10:39
一个证都没&nbsp;我能填什么
程序员小白条:别人有,你为什么没有,还是这个道理,社会就是比较,竞争,淘汰,你要安逸,那么就要做好淘汰的准备
点赞 评论 收藏
分享
评论
13
1
分享

创作者周榜

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