aboutsummaryrefslogtreecommitdiff
path: root/reverse_word_string.rs
blob: 6acc9a4bddadb5d9ce16995a1751a1b77b5782bd (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
struct Solution;

impl Solution {
    pub fn reverse_words(s: String) -> String {
        let mut s: Vec<char> = s.trim().chars().rev().collect();
        s.push(' ');
        let mut i: usize = 0;
        for j in 0..s.len() {
            if s[j] == ' ' {
                s[i..j].reverse();
                i = j + 1;
            }
        }
        s.pop();
        let mut i = 1;
        for j in 1..s.len() {
            if s[j] == ' ' && s[j - 1] == ' ' {
                continue;
            }
            s[i] = s[j];
            i += 1;
        }
        s.truncate(i);
        s.into_iter().collect()
    }
}

fn main() {
    let s = "the sky is blue".to_string();
    print!("{}", Solution::reverse_words(s));
}