practice_runLengthEncoding/rust_impl/src/main.rs
2021-08-18 20:32:40 +09:00

38 lines
954 B
Rust

use structopt::StructOpt;
#[derive(StructOpt, Debug)]
#[structopt(name = "RunLengthEncoding")]
struct Opts {
input: String,
}
fn main() {
let opts = Opts::from_args();
let mut current: Option<char> = None;
let mut current_count: u32 = 0;
let mut list: Vec<(char, u32)> = Vec::new();
for c in opts.input.chars() {
if c.is_ascii_whitespace() {
continue;
} else {
if current.is_none() || current.unwrap() != c {
if current_count > 0 {
list.push((current.unwrap(), current_count));
}
current_count = 1;
current = Some(c);
} else {
current_count += 1;
}
}
}
if current_count > 0 && current.is_some() {
list.push((current.unwrap(), current_count));
}
for (c, count) in list {
println!("{}: has count of {}", c, count);
}
}