3. Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters.
Example 1:
Input: "abcabcbb"
Output: 3
Explanation: The answer is "abc"
, with the length of 3.
Example 2:
Input: "bbbbb"
Output: 1
Explanation: The answer is "b"
, with the length of 1.
Example 3:
Input: "pwwkew" Output: 3 Explanation: The answer is"wke"
, with the length of 3. Note that the answer must be a substring,"pwke"
is a subsequence and not a substring.
题目链接:https://leetcode.com/problems/longest-substring-without-repeating-characters/
解法:双指针-滑动窗口
用数组来判断字母是否出现过。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int len = s.length();
if (len<=0) return 0;
int l = 0, r = 0, maxl = 0;
int charlist[128];
memset(charlist,0,sizeof(charlist));
while(r<len){
int idx = int(s[r]);
if(charlist[idx] == 0){
if(r-l+1>maxl) maxl = r-l+1;
charlist[idx]=1;
r++;
}else{
charlist[int(s[l])] = 0;
l++;
}
}
return maxl;
}
};
tip:
1)数组赋初值用 int charlist[128]={0} 即可。
2)取较大值用 max(r-l+1, maxl) 即可。