算法:javascript截取字符串

题目:

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given "abcabcbb", the answer is "abc", which the length is 3.

Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring, "pwke" is a subsequence and not a substring.

代码

var lengthOfLongestSubstring = function(s) {
    let result = 0, t = [];//预定义
    // var s = 'aab';
    var ans = 0, i = 0, j = 0, n= s.length;
        while (i < n ) {
            // try to extend the range [i, j]
            let index = t.indexOf(s[i]);
            // if(i==2)
            //     return index;
            if (index < 0){
                
                ans = Math.max(t.push(s[i]),ans);
                i++;
            }
            else {
                t= t.slice(index + 1);//返回截取出来的数组
                continue;
            }
        }
        return ans;
    
    
    
    /*  O^n */
    /*
    for (var i = 0; i < s.length; i++) {
        //t = t.slice(t.indexOf(s[i]) + 1);//检测是否包含字符串,
        let index = t.indexOf(s[i]) + 1;//找到就返回第一次出现的位置
        
        t = t.slice(index);
        result = Math.max(t.push(s[i]), result);
        
        if(i ==3)
            return t;
    }
    return result
    */
}

  

原文地址:https://www.cnblogs.com/pangxiaox/p/7028043.html