解题思路:滑动窗口+哈希表
#include <string>
#include <unordered_set>
#include <algorithm>
using namespace std;
class Solution {
public:
int lengthOfLongestSubstring(string s) {
unordered_set<char> set;
int right = 0;
int result = 0;
for (int left = 0; left < s.size(); left++)
{
// 当右指针小于字符串的长度,并且字符set中的没有出现这个字符时,进入while循环。
while (right<s.size()&&set.count(s[right])==0)
{
set.insert(s[right]);// 将这个没有出现的字符插入进set中
result = max(result, right - left+1);// 计算最大字符长度
right++;// 右指针累加
}
set.erase(s[left]);// 出了while循环后,就说明右指针可以不动了,移动左指针即可
}
return result;
}
};