分析
用哈希表记录所有字母出现的次数。
利用队列,如果当前入队的字母出现字数超过了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;
}
};
该博客介绍了如何利用哈希表记录字符串中每个字符的出现次数,并结合队列来找到最长不重复的子串。在C++实现中,遍历字符串,当新字符出现次数超过1时,队头元素出队,直至当前字符出现次数为1。最终队列的大小即为最长不重复子串的长度。
2699

被折叠的 条评论
为什么被折叠?



