题解 | #最长不含重复字符的子字符串#

最长不含重复字符的子字符串

https://www.nowcoder.com/practice/48d2ff79b8564c40a50fa79f9d5fa9c7

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param s string字符串
 * @return int整型
 */
var lengthOfLongestSubstring = function (s) {
    if (!s.length) return 0
    let max = 0
    //右指针,滑动窗口
    let rTemp = 0
    //存储当前的滑动窗口
    let hash = new Set()
    //左指针每次在有重复字符的时候都向右移动
    for (let i = 0; i < s.length; i++) {
        //当没有重复字符&&右指针不出界的时候添加进滑动窗口,右指针向右移动
        while (rTemp < s.length && !hash.has(s[rTemp])) {
            hash.add(s[rTemp])
            rTemp++
            max = Math.max(max, rTemp - i)
        }
        hash.delete(s[i])
    }
    return max
};
module.exports = {
    lengthOfLongestSubstring: lengthOfLongestSubstring,
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务