剑指 Offer II 016. 不含重复字符的最长子字符串
网易雷火前端开发 笔试题第2题
解题思路:
1、定义两个变量分别为max和str 代表返回长度 和 新的字符串
2、遍历 老字符串 使用indexof判断新字符串是否存在老字符串的所有值
如有 返回下标 如无 返回-1
3、当存在下标 新字符串删除 下标+1个字符(substring)
4、将遍历的字符通通拼接到新字符串
5、递归取最大长度
参考代码:
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
let max = 0;
let str ='';
for(let i =0;i<s.length;i++){
let index = str.indexOf(s[i]);
if(index !==-1){
str = str.substring(index+1)
}
str+=s[i];
max = Math.max(max,str.length)
}
return max
};
运行结果:
感悟:
1、此题还可以使用 常见的滑动窗口解法
2、大厂笔试题和剑指offer算法题刷的太少了,缺乏系统的学习和练习
3、逻辑思维依旧没有打开,思维过于局限!!多刷题吧