File tree Expand file tree Collapse file tree 1 file changed +26
-0
lines changed
longest-repeating-character-replacement Expand file tree Collapse file tree 1 file changed +26
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ // O(n) time / O(n) space
3
+ func characterReplacement( _ s: String , _ k: Int ) -> Int {
4
+ var windowStart = 0
5
+ var maxLength = 0
6
+ var maxCharacterRepeat = 0
7
+ var countByCharacter = [ Character: Int] ( )
8
+ var characters = Array ( s)
9
+
10
+ for windowEnd in 0 ..< characters. count {
11
+ countByCharacter [ characters [ windowEnd] , default: 0 ] += 1
12
+ maxCharacterRepeat = max ( maxCharacterRepeat, countByCharacter [ characters [ windowEnd] ] !)
13
+
14
+ var length = windowEnd - windowStart + 1
15
+ if length - maxCharacterRepeat <= k {
16
+ maxLength = max ( maxLength, length)
17
+ } else {
18
+ while ( windowEnd - windowStart + 1 ) - maxCharacterRepeat > k {
19
+ countByCharacter [ characters [ windowStart] ] ! -= 1
20
+ windowStart += 1
21
+ }
22
+ }
23
+ }
24
+ return maxLength
25
+ }
26
+ }
You can’t perform that action at this time.
0 commit comments