const INPUT: &str = "aaabcccédéééééééééééééééééé"; fn compress(s: &str) -> String { let mut chars: Vec = vec![]; let mut curr: Option = None; let mut count: u32 = 0; for b in s.chars() { match curr { None => { curr = Some(b); count += 1; } Some(c) if b == c => { count += 1; } Some(c) => { chars.push(c); for c in count.to_string().chars() { chars.push(c); } curr = Some(b); count = 1; } } } if let Some(c) = curr { chars.push(c); for c in count.to_string().chars() { chars.push(c); } } chars.into_iter().collect() } fn main() { println!("Input: {INPUT}"); println!("Output: {:?}", compress(INPUT)); }