redis搭建主從、哨兵
阿新 • • 發佈:2022-02-18
題目
分析
用滑動視窗,就是雙指標來做。設 i 為串的尾指標,符合題目要求的串的左側指標為 j ,且 i 指標向後移動時,j 指標可能不動或者向右移動。
用雜湊表來存 從 j 到 i 部分的每個字元的次數,如果 i + 1 重複的話,那麼衝突的一定是 位置 i 和 i + 1 部分衝突,這時 j 需要往前移動,移動
到沒有雜湊表重複為止。
程式碼
1 class Solution { 2 public: 3 int lengthOfLongestSubstring(string s) { 4 unordered_map<char,int>heap;5 int res = 0; 6 for(int i = 0,j = 0;i < s.size();i++){ 7 heap[s[i]]++; //尾指標往後移動,同時更新雜湊表 8 while(heap[s[i]] > 1){ 9 //出現重複字元 , 視窗開始滑動,頭部指標 j 開始往後移動,直到沒有重複為止 10 heap[s[j]]--; 11 j++; 12 } 13 res = max(res,i - j + 1); 14 } 15 16 return res; 17 } 18 };