算法记录,每日一题_无重复字符串03

题目

首先还是最原始的自己思考解决方法。。

思路就是,遍历+校验是否有重复+递归,效率低下,惨不忍睹。不过是自己思考的。

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    // 子串是相连的
    // 子序列是不相连
    if(s == ''){
        return 0;
    }
    var maxLength=1;
    var k = 0;
    for(var i=0;i<s.length;i++){
        var tempMax = 1;
        var tempList = [s[i]];
        k = i;
        function checkRepeat(list,value){
            for(var item of list){
                if(item == value){
                    return true;
                }
            }
            return false;
        }
        function checkNext(){
            k = k+1;
            if(s[k]){
                if(checkRepeat(tempList,s[k])){
                    // 有重复
                    if(tempMax>maxLength){
                        maxLength=tempMax;
                    }
                }else{
                    // 无重复
                    tempList.push(s[k]);
                    tempMax++;
                    if(tempMax>maxLength){
                        maxLength=tempMax;
                    }
                    checkNext()
                }
            }
        }
        checkNext();
    }
    return maxLength;
};

 

然后是标准答案是使用滑动窗口。

发表评论

邮箱地址不会被公开。