碎碎念

好吧我收回上一篇的话,其实用起来也还行吧。

做这题也是有点笨了哈就这样把滑动窗口忘得一干二净,但是现在想起来了!第一遍用set运气好过了样例,后面怎么改都不对;第二遍想起来写滑动窗口了但是就这样一口气遍历到最后只记住了最后一个子串的长度,我还疑惑居然没有更新ans...

犯蠢到此结束!接下来是正确的滑动窗口!

题目

答案

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    let left = 0
    const arr = [...s]
    let ans = 0
    const st = new Set()
    for (let right = 0 ; right < arr.length ; right++) {
        const val = arr[right]
        while (st.has(val)) {
            st.delete(arr[left])
            left++
        }
        st.add(val)
        ans = Math.max(ans, right - left + 1)
    }
    return ans
};

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐