Given a string, find the length of the longest substring without repeating characters.
照例使用 javascript 编程:
这题乍看不难,实际上,在效率提高方面可以参照 KMP 算法。尽可能的减少重复运算。保留求解域的连续性。提交结果:159 ms ,92%
var lengthOfLongestSubstring = function(s) {
var maxLen = 1,result = 0;
var start = 0,nextStart;
if(!s.length){
return 0;
}
var temp = s.substr(start,maxLen);
for(var i = 1; i < s.length; i++){
// console.log(i,temp,s[i],maxLen);
if( temp.indexOf(s[i]) > -1 ){
start = temp.indexOf(s[i]) + 1 + start;
result = maxLen > result ? maxLen : result;
maxLen = i - start + 1;
// console.log("重组:",s.substr(start,maxLen),maxLen);
}else{
maxLen++;
}
temp = s.substr(start,maxLen);
}
// 一般情况下,都需要最后进行一次判断,防止结果出现在最后。
return maxLen > result ? maxLen : result;
};