Skip to content

Commit de1d0d0

Browse files
committed
Runtime: 1 ms (Top 91.75%) | Memory: 2.10 MB (Top 57.73%)
1 parent 8523e1d commit de1d0d0

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Runtime: 1 ms (Top 91.75%) | Memory: 2.10 MB (Top 57.73%)
2+
3+
use std::cmp::max;
4+
const NUM_ALPHA : usize = 26;
5+
6+
impl Solution {
7+
pub fn character_replacement(s: String, k: i32) -> i32 {
8+
let mut counts : [usize;NUM_ALPHA] = [0;NUM_ALPHA];
9+
let s = s.chars().collect::<Vec<_>>();
10+
(0..s.len()).fold((0, 0, 0), |(res_len, mut maxf, mut l), r| {
11+
counts[(s[r] as u8 - b'A') as usize] += 1;
12+
maxf = max(maxf, counts[(s[r] as u8 - b'A') as usize]);
13+
if (r - l + 1 ) - maxf > k as usize {
14+
counts[(s[l] as u8 - b'A') as usize] -= 1;
15+
l += 1;
16+
}
17+
(max(res_len, r - l + 1), maxf, l)
18+
}).0 as i32
19+
}
20+
}

0 commit comments

Comments
 (0)