Given a string, find the length of the longest substring without repeating characters.
Examples:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, the answer is "b"
, with the length of 1.
Given "pwwkew"
, 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.
Subscribe to see which companies asked this question.
class Solution {
public:
//设一个容器,对应位置存放该字母在string中最后出现的位置
int lengthOfLongestSubstring(string s) {
vector<int> weizhi(256,-1);
int start=-1, ans=0;
for(int i = 0;i<s.length();i++){
if(weizhi[s[i]] > start) //字段中有重复字母
start = weizhi[s[i]]; //从重复字母中靠前的那一个后面那里重新开头计算
weizhi[s[i]] = i; //存放该字母在string中最后出现的位置
ans=max(ans,i-start);
}
return ans;
}
};