class Solution {
public:
int lengthOfLongestSubstring(string s) {
if(s.size()<=1)
return s.size();
unordered_map<char,int> hashmap; // hashmap里存放的是上一次遇到该字符的位置
int left=-1;
int res=0;
for(int i=0;i<s.size();i++){
if(hashmap.find(s[i])!=hashmap.end()){//hash有值,表示前面有该字符,但该字符是否在left到i中影响长度
left=max(hashmap[s[i]],left);
//若hashmap[s[i]]>left,说明该字符在left到i里,那么说明当前长度中有重复,目前不重复长度为 i-该字符上一次位置
//若hashmap[s[i]]<left,说明该字符不在left到i里,当前长度left到i依然没有重复,所以无论如何取大的一个值
}
hashmap[s[i]]=i;
res=max(res,i-left);
}
return res;
}
};