题目:
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.
代码:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int l = 0 , h = 0;
int result = 0;
int cal[256] = {0};
while( h < s.size() ){
int len = 0;
cal[s[h]] ++;
while( cal[s[h]] > 1 ){ // if cal[s[h]] > 1 , we can judge that s[h] appears more than one between s[l] to s[h]
cal[s[l]]--; // increase l by one , cal[s[l]] will be reduced until s[h] == 1 .
++ l; // it means that s[h] appears once between s[l] to s[h]
}
result = max( result , h - l + 1 );
++ h;
}
return result;
}
};