leetcode报错

来源:7-5 LeetCode:3. 无重复字符的最长子串

AodaZhang

2020-07-16

老师这个代码leetcode报错了

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function (s) {
  // 左指针
  let left = 0
  // 最长无重复字符串长度
  let res = 0
  // 建立字典,key为s的值,value为s的下标
  const map = new Map()
  // 遍历字符串
  for (let right = 0; right < s.length; right++) {
    // 获取当前子串
    const sub_s = s[right]
    if (map.has(sub_s) && map.get(sub_s) >= 1) {
      left = map.get(sub_s) + 1
    }
    // 返回 最长无重复字符串长度 与 滑动窗口长度 中的最大值
    res = Math.max(res, right - left + 1)
    // 存储当前字符的值和下标
    map.set(sub_s, right)
  }

  return res
};

"abcabcbb"
期望3,输出4

写回答

2回答

lewis

2020-07-17

//img.mukewang.com/szimg/5f11249b09a05f0413220636.jpg这个地方不是1,而是left,左指针

0
1
AodaZhang
谢谢老师!是我看走眼了,加班加迷糊了
2020-07-17
共1条回复

lewis

2020-07-16

详细比对一下你的代码和视频里的代码的区别

0
1
AodaZhang
老师,我专门按照您视频里的敲了一遍,还是不行... ``` /** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function (s) { // 左指针 let l = 0 // 最长无重复字符串长度 let res = 0 // 建立字典,key为s的值,value为s的下标 const map = new Map() // 遍历字符串 for (let r = 0; r < s.length; r += 1) { if (map.has(s[r]) && map.get(s[r]) >= 1) { l = map.get(s[r]) + 1 } // 返回 最长无重复字符串长度 与 滑动窗口长度 中的最大值 res = Math.max(res, r - l + 1) // 存储当前字符的值和下标 map.set(s[r], r) } return res }; ```
2020-07-16
共1条回复

JavaScript版数据结构与算法 轻松解决前端算法面试

夯实算法基础,填补技术短板,助力面试考题最后一公里

2479 学习 · 683 问题

查看课程