THE
問題
解決
コード
/*
思路: 这个题没有目标值,所以就不能套用模板了。 因为need需要实时更新。 这里和之前不一样,要在收缩窗口完成后更新
- define window
- define left right, maxlen = 1.
- while right<size
- - a = s[right] right++
- - window++;
- - while s[right] in window
- - - if(right- left>maxlen) maxlen = right-left;
- - - left = right
*/
class Solution {
public:
int lengthOfLongestSubstring(string s) {
if(!s.size())return 0;
unordered_map<char, int> window;
int left = 0,right = 0 , maxlen = 1;
while(right<s.size()){
char a = s[right];
window[a]++;
right++;
while(window[a]>1){
char d = s[left];
left ++;
window[d]--;
}
if(right-left>maxlen)maxlen = right -left;
}
return maxlen;
}
};
まとめと考察
- ここで発生する状況は1つだけなので、縮小と拡大が完了した後に結果が更新されます。