leetCode-Record icon indicating copy to clipboard operation
leetCode-Record copied to clipboard

面试题48. 最长不含重复字符的子字符串

Open fireairforce opened this issue 5 years ago • 1 comments

滑动窗口的典型例子:

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
  let map = {}
  let res = 0
  let slidingWindow = []
  for (let item of s) {
    if (map[item]) {
      let deleteIndex = slidingWindow.findIndex((_s) => _s === item)
      for (let i = 0; i < deleteIndex; i++) {
        map[slidingWindow[i]] = false
      }
      slidingWindow = slidingWindow.slice(deleteIndex + 1).concat(item)
    } else {
      if (slidingWindow.push(item) > res) {
        res = slidingWindow.length
      }
    }
    map[item] = true
  }
  return res
}

fireairforce avatar Feb 29 '20 08:02 fireairforce

维护一个不重复字符的滑动窗口就可以啦~

fireairforce avatar Feb 29 '20 08:02 fireairforce