0%

LeetCode题解|3. Longest Substring Without Repeating Characters

题目链接:3. Longest Substring Without Repeating Characters

概述

这个题目给定一个字符串s,找出其中不含有重复字符的最长子串的长度。

思路

该题目可使用 滑动窗口 来做。

具体来说,使用两个指针leftright来确定出一个子串的范围,如果s[right]已经在s[left...right-1]中出现过,则将left向右挪,反之则将right向右挪,直到right到达s结尾。

通过这样对s进行一次扫描,即可得到最长子串。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
var maxLength = 0;
var left = 0,
right = 1;
while(right <= s.length){
if(maxLength < right - left){
maxLength = right - left;
}
if(s.substring(left, right).indexOf(s[right]) != -1){
left++;
}
else{
right++;
}
}
return maxLength;
};

题解合集