分析
用哈希表记录所有字母出现的次数。
利用队列,如果当前入队的字母出现字数超过了1次,就让队头出队,直到当前字母只出现一次为止。
class Solution {
public:
unordered_map<char,int> mp;
int ans;
queue<char> q;
int lengthOfLongestSubstring(string s) {
if(s.size()<1) return 0;
for(auto c:s)
{
mp[c]++;
while(q.size() && mp[c]>1) //当前字母出现次数大于1次
{
mp[q.front()]--; //队头出队
q.pop();
}
q.push(c);
if(ans<q.size()) ans=q.size(); //更新答案
}
return ans;
}
};