Skip to content

Commit 3e0dc3e

Browse files
committed
solve
1 parent 1aefa30 commit 3e0dc3e

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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+
}

0 commit comments

Comments
 (0)