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) {
if(s.empty()) return 0;
vector<int> dic(150,-1);
int start =-1;
int maxlen =0;
for(int i=0; i < s.size() ; i++)
{
if(dic[s[i]] > start) // 如果该字符上次出现的index大于前一个字符上一次出现index
{
start = dic[s[i]]; //记录该字符上一次出现的地方
}
dic[s[i]] = i; //更新该字符的index
maxlen = max(maxlen , i-start); //记录已经出现的Longest Substring
}
return maxlen;
}
};