案例:对输入字符串求取其最长无重复字符子串
暴力方式:在所有子串中找出满足条件最长的,复杂度O(n2)
采用滑动窗口可简化过程
解决查找满足一定条件连续区间的问题
‘字符串’: 长度function LongestSubstring(str) {
let left = 0 // 头指针
let right = 0 // 尾指针
let count = str.length ? 1 : 0 // 用于缓存目标结果
let subStr = str[0] || '' // 用于缓存目标结果
while (right < str.length) {
let subTemp = str.slice(left, right) // 获取区间内容
let charIndex = subTemp.indexOf(str[right])
if (~charIndex) { // 比较下一位元素是否重复
// 重复(不满足条件)头指针应移过重复位置
left = left + charIndex + 1
right++
} else {
right++ // 不重复(满足条件)继续移动尾指针
// 缓存目标结果
subTemp = str.slice(left, right)
if (subStr.length < subTemp.length) {
subStr = subTemp
count = subTemp.length
}
}
}
return `'${subStr}':${count}`
}