【算法题】使用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)