diff options
author | Guillermo Ramos | 2024-12-02 12:00:54 +0100 |
---|---|---|
committer | Guillermo Ramos | 2024-12-02 23:30:40 +0100 |
commit | eb40b9e505250f8c605dda0d36e398756748e45b (patch) | |
tree | d9760c233387a378e73a1f64786c41a4d293fa07 | |
parent | 06fb0dfd62ec5d712e34d960b2cee9eddbf90336 (diff) | |
download | perlweekly-eb40b9e505250f8c605dda0d36e398756748e45b.tar.gz |
-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)); +} |