【知识图谱】【算法】--字符串类

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);

 

posted @ 2021-06-27 21:42  惊沙男孩  阅读(41)  评论(0)    收藏  举报