20. Longest Repeating Character Replacement
Input: s = "ABAB", k = 2
Output: 4
Explanation: Replace the two 'A's with two 'B's or vice versa.Input: s = "AABABBA", k = 1
Output: 4
Explanation: Replace the one 'A' in the middle with 'B' and form "AABBBBA".
The substring "BBBB" has the longest repeating letters, which is 4.Solution: (Sliding Window)
class Solution
{
public:
int characterReplacement(string s, int k)
{
int start = 0;
int end = 0;
int maxLen = 0;
vector<int> count(26, 0);
int maxCount = 0;
while (end < s.length())
{
count[s[end] - 65]++;
if (count[s[end] - 65] > maxCount)
{
maxCount = count[s[end] - 65];
}
end++;
while (end - start - maxCount > k)
{
maxCount = 0;
count[s[start] - 65]--;
start++;
for (int i = 0; i < 26; i++)
{
if (count[i] > maxCount)
{
maxCount = count[i];
}
}
}
maxLen = max(maxLen, end - start);
}
return maxLen;
}
};Last updated