最长不重复字符串

149 阅读1分钟
/*
    思路其实很简单,定义一个stack,遍历字符串丢进stack中
    若存在该字符,就清空这个stack,开始下一次的不重复序列;
    若不存在,将字符push进stack,并记录当前的长度;
*/
const fn = s => {

    const len = s.length
    
    let max = 0 // 最大长度
    
    const stack = [] // 储存不重复的字符
    
    for (let j=0; j<len; j++) {
        const now = s[j]
        const exist = stack.indexOf(now)
    
        if (exist !== -1) {
            stack.splice(0, exist + 1)
        }
    
        stack.push(now)
    
        max = Math.max(max, stack.length)
    
    }
    
    return max
}