思路:滑動窗口的思想spa
方法一:滑動窗口code
int lengthOfLongestSubstring(string s) { /* 控制一個滑動窗口,窗口內的字符都是不重複的,經過set能夠作到判斷字符是否重複 */ unordered_set<char> set; size_t maxL=0; for(int l=0,r=0;r<s.size();++r) { if (!set.count(s[r])) // 當前判斷的元素不存在於滑動窗口[l,r-1]中 set.insert(s[r]); // 將元素放入滑動窗口(即記錄不重複字符) else // 當前判斷的元素已經存在於滑動窗口[l,r-1]中 { while(set.count(s[r])) // 從左縮短窗口,直到剔除當前判斷的元素爲止 set.erase(s[l++]); set.insert(s[r]); // 將當前判斷元素放入到滑動窗口中 } maxL=max(maxL,set.size()); // 更新無重複字符的最長子串 } return maxL; }