Longest Repeating Character Replacement LeetCode solution in Rust

1
use std::cmp::max;
2
const NUM_ALPHA: usize = 26;
3

4
impl Solution {
5
pub fn character_replacement(s: String, k: i32) -> i32 {
6
let mut counts: [usize; NUM_ALPHA] = [0; NUM_ALPHA];
7
let s = s.chars().collect::<Vec<_>>();
8
(0..s.len())
9
.fold((0, 0, 0), |(res_len, mut maxf, mut l), r| {
10
counts[(s[r] as u8 - b'A') as usize] += 1;
11
maxf = max(maxf, counts[(s[r] as u8 - b'A') as usize]);
12
if (r - l + 1) - maxf > k as usize {
13
counts[(s[l] as u8 - b'A') as usize] -= 1;
14
l += 1;
15
}
16
(max(res_len, r - l + 1), maxf, l)
17
})
18
.0 as i32
19
}
20
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0