What is wrong in this code.. It is failing all test cases
hello @ayush.18
ur logic is not correct.
Basically, there is a string which consists of only a and b. A substring is a contiguous sequence of characters within a string. Our aim is to generate substrings of a and b by swapping characters such that the lengths of substrings of either a or b is maximum possible. The only constraint we have here is that only k swaps are allowed. So, you have to tell the maximum possible length of the substrings that can be generated. By swapping, we mean that a can be replaced by b and b can be replaced by a.
For example:
Consider the following string: abba and k = 2
So, we can make only two swaps
abba (swaps = 0)
aaba (swaps = 1)
aaaa (swaps = 2)
Thus, the maximum length of substring is 4.
Consider the string: ababab and k=2
ababab (swaps = 0)
aaabab (swaps =1)
aaaaab (swaps = 2)
Thus, the maximum length of substring is 5.
approach->
You can solve this problem in O(n) time using the two pointer approach.
- Make two variabes , say i and j .
- i defines the beginning of a window and j defines its end.
- Start i from 0 and j from k.
- Letβs talk about the singular case when we are considering the max window for only 'aβs and consider only the swapping of b-> a. If we are able to get the answer for max window of consecutive 'aβs , we can simply implement the same algo for the max βbβ window as well.
- So we started i from 0 and j from k.
- Move j ahead freely as long as there are βaβ characters at s[ j ] position.
- Maintain a count variable which counts the number of swaps made or the number of 'bβs in our A window.
- If you encounter a βbβ char at s[ j ] position , increment the count variable. Count should never exceed k .
- Take the size of the window at every point using length = j - i + 1;
- Compute the max size window this way and do the same for βbβ as well.
- Output the maximum size window of βaβ and βbβ.