题目
首先还是最原始的自己思考解决方法。。
思路就是,遍历+校验是否有重复+递归,效率低下,惨不忍睹。不过是自己思考的。
/** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s) { // 子串是相连的 // 子序列是不相连 if(s == ''){ return 0; } var maxLength=1; var k = 0; for(var i=0;i<s.length;i++){ var tempMax = 1; var tempList = [s[i]]; k = i; function checkRepeat(list,value){ for(var item of list){ if(item == value){ return true; } } return false; } function checkNext(){ k = k+1; if(s[k]){ if(checkRepeat(tempList,s[k])){ // 有重复 if(tempMax>maxLength){ maxLength=tempMax; } }else{ // 无重复 tempList.push(s[k]); tempMax++; if(tempMax>maxLength){ maxLength=tempMax; } checkNext() } } } checkNext(); } return maxLength; };
然后是标准答案是使用滑动窗口。