1 确定一个start位置,start的位置 start = max(start, map[s[i]] + 1);
class Solution {
public:
int lengthOfLongestSubstring(string s) {
size_t size=s.size();
if(size==0){
return 0;
}
int start=1;
int res=1;
map<char,int> mp; //存储每个字符开始的位置
for(int i=0;i<size;i++){
if(mp[s[i]]){
start=max(mp[s[i]]+1,start); //这里必须max 因为s[i]字母可能存在start的前面
//start=mp[s[i]]+1; //这里必须max 因为s[i]字母可能存在start的前面. abacb
}
mp[s[i]]=i+1; //更新开始的位置
res=max(res,i-start+2);
}
return res;
}
};