給定乙個只包含a和c的字串,你可以任意修改最多k個字元,讓a變成c,或者c變成a。請問修改完之後,最長連續相同字元的長度是多少。
1,"aaac"
4類似於連續的問題,採取滑動視窗,維護乙個l=>r的視窗,確保視窗內的在最多k次調整下,可以組合成相同的字串。
基本策略:
當視窗內a的字元、c的字元都大於k時,那麼一定無法替換成相同的字串,此時l++
否則,視窗內可以替換成相同的字串,ans=max(ans,r-l+1) 同時r++
採取num[2]記錄a c字元的數量,每次移動的時候,減少或增加。
易錯點:
int solve(int k, string s) ;//num[0]表示a的數量 num[1]表示c的數量
int ans=1;
if(s[l]=='a')
num[0]++;
else
num[1]++;
while(rk && num[1]>k) //如果滑動視窗內 a的數量 c的數量 均大於k 那麼不可能組成相同字元
else //說明視窗能夠組合成連續相同
} return ans;
}
滑動視窗leetcode
給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗 k 內的數字。滑動視窗每次只向右移動一位。返回滑動視窗最大值。示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3輸出 3,3,5,5,6,7 解釋 滑動視窗的位置 最大值 1 ...
leetcode 滑動視窗
面試題57 ii.和為s的連續正數序列 題目 輸入乙個正整數 target 輸出所有和為 target 的連續正整數序列 至少含有兩個數 序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。題解 摘自 什麼是滑動視窗 滑動視窗可以看成陣列中框起來的乙個部分。在一些陣列類題目中,我們可以用滑動...
leetcode 滑動視窗
3.無重複字元的最長子串 給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。示例 1 輸入 abcabcbb 輸出 3解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pww...