Leetcode-424 替換後的最長重複子串
阿新 • • 發佈:2021-02-19
題目描述:
給你一個僅由大寫英文字母組成的字串,你可以將任意位置上的字元替換成另外的字元,總共可最多替換k次。在執行上述操作後,找到包含重複字母的最長子串的長度。
注意:字串長度 和 k 不會超過10^4。
示例 1:
輸入:s = "ABAB", k = 2
輸出:4
解釋:用兩個'A'替換為兩個'B',反之亦然。
示例 2:
輸入:s = "AABABBA", k = 1
輸出:4
解釋:
將中間的一個'A'替換為'B',字串變為 "AABBBBA"。
子串 "BBBB" 有最長重複字母, 答案為 4。
class Solution { public int characterReplacement(String s, int k) { if(s==null||s.length()==0) return 0; int start=0; int end=0; int maxlength=0; int maxnum=0; int[] array=new int[26]; while(end<s.length()) { array[s.charAt(end)-'A']++; maxnum=Math.max(maxnum,array[s.charAt(end)-'A']); if(end-start+1-maxnum>k) { array[s.charAt(start)-'A']--; start++; } maxlength=Math.max(maxlength,end-start+1); end++; } return maxlength; } }