采用双指针法:首尾指针移动,并保证首尾之间无重复元素出现;当有重复元素出现时,判断maxLen是否需要更新;
class Solution {
public:
int lengthOfLongestSubstring(string s) {
if(s.size()<1)
return 0;
int begin = 0, maxLen=1,end=begin;
unordered_map<char,bool> table;
while(end<s.size())
{
while(table.find(s[end])==table.end()&&end<s.size())
{
table[s[end]]==true;
end++;
}
table.erase(table.begin(),table.end());
maxLen=max(maxLen,end-begin);
begin++;
end = begin;
}
if(end == s.size())
maxLen = max(maxLen,end-begin);
return maxLen;
}
};