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