(1)map,记录首次出现重复字母,依次删除在它之前出现的字母
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int n=s.length(),maxs=0;
unordered_map<char,int> mp;
int i=0;
while(i<n) {
if(mp.find(s[i])==mp.end()) {
mp[s[i]]=i;
} else {
if(mp.size()>maxs) maxs=mp.size();
for(auto it=mp.begin();it!=mp.end();) {
if(it->second<mp[s[i]]) mp.erase(it++);
else it++;
}
mp[s[i]]=i;
}
i++;
}
if(mp.size()>maxs) maxs=mp.size();
return maxs;
}
};