算法题,使用js找出字符串中最长的无重复子串

41 阅读1分钟

【算法题】使用js找出字符串中最长的无重复子串

这是一个滑动窗口问题算法题,我们可以通过创建一个滑动窗口来找到最长的没有重复字符的子串。下面是一个简单的JavaScript实现:

let a = 'abckkkbxacccb'

function longestStr(s) {
  let l = 0 // 左指针
  let r = 0 // 右指针
  let res = 0
  let maxStartIndex = 0 // 最大子串起始位置
  let map = new Map()
  for (; r < s.length; r++) {
    if (map.has(s[r]) && map.get(s[r]) >= l) {
      l = map.get(s[r]) + 1
    }
    // res = Math.max(res, r - l + 1)
    let len = r - l + 1
    if (len > res) {
      res = len
      maxStartIndex = l
    }

    map.set(s[r], r)
  }
  // return res
  return s.slice(maxStartIndex, maxStartIndex + res)
}

let b = longestStr(a)
console.log(b)