aboutsummaryrefslogtreecommitdiff
path: root/count_and_say.rs
blob: 55a1fec59af014ebe4f526555d9266825523a191 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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));
}