Problem Statement:
In this problem, you are given a string s
and an integer k
. Your task is to find the length of the longest substring that contains the same character, where you can replace at most k
characters in the string to form this substring.
Given a string s
, we need to determine the length of the longest substring where all characters are the same, with the possibility of replacing at most k
characters in the string.
The problem can be solved using the sliding window technique, where we maintain a window of characters that contains at most k
different characters (the ones that we will replace). We will use the following approach:
This helper function calculates the maximum length of a substring that consists entirely of the character c
after replacing at most k
characters in the string s
.
string s
: The input string.int k
: The maximum number of characters that can be replaced.char c
: The character to form the longest substring of.Initialization:
i
as the right boundary of the sliding window.l
is the left boundary of the sliding window.cnt
counts the number of characters that need to be replaced to make the substring consist entirely of c
.maxlength
stores the maximum length of the desired substring found so far.Sliding Window Technique:
i
as the right boundary.s[i]
is not equal to c
, increment cnt
.cnt
exceeds k
, adjust the left boundary l
until cnt
is less than or equal to k
.maxlength
with the length of the current valid window (i - l + 1
).Return the result:
c
.Input:
s = "ABAB"
, k = 2
Output:
4
Explanation:
By changing the first two 'A's or the first two 'B's, we can make the entire string consist of the same character. Thus, the maximum length of the substring is 4
.
Input:
s = "AABABBA"
, k = 1
Output:
4
Explanation:
By replacing the middle 'B' with an 'A', we can form the substring "AAAA" of length 4. The maximum length is 4
.
Input:
s = "BBBB"
, k = 2
Output:
4
Explanation:
The entire string already consists of the same character, so no replacements are needed. The maximum length is 4
.
Input:
s = "AABACD"
, k = 1
Output:
3
Explanation:
By changing one 'C' to 'A', we can form the substring "AAA" of length 3. Thus, the maximum length is 3
.
Input:
s = "AABBAA", k = 2
Output:
4
Explanation:
By changing the first two 'B's to 'A', we can form the substring "AAAA" of length 4. The maximum length is 4
.
https://leetcode.com/problems/longest-repeating-character-replacement/description/
Loading component...
Loading component...
Main Function is not defined.
INPUT: s = "ABAB" , k =2
OUTPUT SENTENCE: 4
public static int characterReplacement(string s , int k){
int maxi =0;
for(int i = 0; i < 26; i++){
int temp = replacedcount(s, k , 'A' + i);
maxi = max(maxi, temp);
}
return maxi;
}//function end
public static int replacedcount(string s, int k, char c){
int i(0), l(0) , cnt(0) , maxlength(0);
while(i < s.length()){
if(s[i] != c){
cnt++;
}
while(cnt > k){
if(s[l] != c){
cnt--;
}
l++;
}
maxlength = max(maxlength, i-l+1);
i++;
}
return maxlength;
}//function end