Longest Repeating Character Replacement LeetCode solution in Rust
1use std::cmp::max;2const NUM_ALPHA: usize = 26;34impl Solution {5pub fn character_replacement(s: String, k: i32) -> i32 {6let mut counts: [usize; NUM_ALPHA] = [0; NUM_ALPHA];7let s = s.chars().collect::<Vec<_>>();8(0..s.len())9.fold((0, 0, 0), |(res_len, mut maxf, mut l), r| {10counts[(s[r] as u8 - b'A') as usize] += 1;11maxf = max(maxf, counts[(s[r] as u8 - b'A') as usize]);12if (r - l + 1) - maxf > k as usize {13counts[(s[l] as u8 - b'A') as usize] -= 1;14l += 1;15}16(max(res_len, r - l + 1), maxf, l)17})18.0 as i3219}20}