【知识图谱】【算法】--字符串类
1. 最长无重复子串的长度:滑动窗口思想
点击查看代码
// 滑动窗口思想
function findLongString(string = ''){
let box = '';// 1. 暂存子串 【窗口】
let lastIndex = 0;// 2. 最长子串时的结束索引
let longLength = 0;// 3. 最大长度
for(let i = 0;i < string.length;i++){
let tempIndex = box.indexOf(string[i]);// 4. OK的,可以取到
if(tempIndex > -1){
box = box.slice(tempIndex + 1) + string[i];// 5. 窗口向后滑动,索引从+1开始
}else {
box += string[i];// 6. 窗口加长[重点]
if(longLength < box.length){
longLength = box.length;// 7. 始终在记录最长,只增不减
lastIndex = i;
}
}
}
// 最长字符串
console.log(string.slice(lastIndex + 1 - longLength,lastIndex+1));
return longLength;
}
let a = 'qwerfdswertghtop';
findLongString(a);

浙公网安备 33010602011771号