Skip to content

Commit 706f910

Browse files
committed
solve longest repeating character replacement
1 parent 70b7a4a commit 706f910

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import java.util.HashMap;
2+
import java.util.Map;
3+
4+
public class Solution {
5+
public int characterReplacement(String s, int k) {
6+
int maxLen = 0;
7+
int maxCount = 0;
8+
Map<Character, Integer> counter = new HashMap<>();
9+
int start = 0;
10+
11+
for (int end = 0; end < s.length(); end++) {
12+
char endChar = s.charAt(end);
13+
counter.put(endChar, counter.getOrDefault(endChar, 0) + 1);
14+
maxCount = Math.max(maxCount, counter.get(endChar));
15+
16+
while (end - start + 1 - maxCount > k) {
17+
char startChar = s.charAt(start);
18+
counter.put(startChar, counter.get(startChar) - 1);
19+
start++;
20+
}
21+
22+
maxLen = Math.max(maxLen, end - start + 1);
23+
}
24+
25+
return maxLen;
26+
}
27+
}
28+
29+

0 commit comments

Comments
 (0)