解答:
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int maxlen=0;
int left=0;
if(s.size()==0)return 0;
unordered_set <char> window;
for(int right=0;right<s.size();right++){
while(window.find(s[right])!=window.end()){
//如果窗口中有与遍历到的元素重复的元素,就不断右移左端点,直到没有重复元素为止
window.erase(s[left]);
left++;
}
window.insert(s[right]);//把遍历到的新元素加入哈希表
maxlen=max(maxlen,right-left+1);//更新maxlen
}
return maxlen;
}
};
方法:
自己写的时候不仅没有想到滑动窗口法、只想到了暴力遍历,甚至没有想到用哈希表来查找是否有重复元素。
借此机会复习了哈希表,也就是unordered_set的用法。