diff options
Diffstat (limited to 'other/count_and_say.rs')
-rw-r--r-- | other/count_and_say.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/other/count_and_say.rs b/other/count_and_say.rs new file mode 100644 index 0000000..55a1fec --- /dev/null +++ b/other/count_and_say.rs @@ -0,0 +1,32 @@ +struct Solution; + +impl Solution { + pub fn count_and_say(n: i32) -> String { + if n == 1 { + return "1".to_string(); + } + let mut output: Vec<char> = vec![]; + let mut last_char = ' '; + let mut count: u8 = '0' as u8; + for char in Solution::count_and_say(n - 1).chars().into_iter() { + if last_char == ' ' { + last_char = char; + count = '1' as u8; + } else if char == last_char { + count += 1; + } else { + output.push(count as char); + output.push(last_char); + last_char = char; + count = '1' as u8; + } + } + output.push(count as char); + output.push(last_char); + output.into_iter().collect() + } +} + +fn main() { + print!("{}", Solution::count_and_say(4)); +} |