题解 | #最长公共子串#

最长公共子串

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

相关推荐

孤寡孤寡的牛牛很热情:为什么我2本9硕投了很多,都是简历或者挂,难道那个恶心人的测评真的得认真做吗
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
13
1
分享
牛客网
牛客企业服务