思路:滑动窗口 + 哈希表
设置两个指针,两个指针都指向开头的位置。左指针不变,右指针不断向右移动。
如果:
- 发现右指针所指向的位置没有出现过,那么将右指针指向的位置放入哈希表中。继续右移,直到到达终点。
如果右指针指向的位置出现过,那么将左指针指向的位置擦除。不断重复,直到右指针指向的元素在哈希表中不存在。
代码:
class Solution {public:int lengthOfLongestSubstring(string s) {int len_s = s.size();int max_len = 0;unordered_set<char> mp;for (int left = 0, right = 0; right < len_s; ) {while (mp.count(s[right])) {mp.erase(s[left++]);}mp.insert(s[right]);max_len = max(max_len, right - left + 1);++right;}return max_len;}};
