diff options
-rw-r--r-- | 296/ch1.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/296/ch1.rs b/296/ch1.rs new file mode 100644 index 0000000..c5c87c4 --- /dev/null +++ b/296/ch1.rs @@ -0,0 +1,38 @@ +const INPUT: &str = "aaabcccédéééééééééééééééééé"; + +fn compress(s: &str) -> String { + let mut chars: Vec<char> = vec![]; + let mut curr: Option<char> = 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)); +} |