## 186. Reverse Words in a String II

Given an input string , reverse the string word by word.

Example:

```Input:  ["t","h","e"," ","s","k","y"," ","i","s"," ","b","l","u","e"]
Output: ["b","l","u","e"," ","i","s"," ","s","k","y"," ","t","h","e"]```

Note:

• A word is defined as a sequence of non-space characters.
• The input string does not contain leading or trailing spaces.
• The words are always separated by a single space.

Follow up: Could you do it in-place without allocating extra space?

## Rust Solution

``````struct Solution;

impl Solution {
fn reverse_words(s: &mut Vec<char>) {
s.reverse();
for word in s.split_mut(|&c| c == ' ') {
word.reverse();
}
}
}

#[test]
fn test() {
let mut s = vec![
't', 'h', 'e', ' ', 's', 'k', 'y', ' ', 'i', 's', ' ', 'b', 'l', 'u', 'e',
];
let res = vec![
'b', 'l', 'u', 'e', ' ', 'i', 's', ' ', 's', 'k', 'y', ' ', 't', 'h', 'e',
];
Solution::reverse_words(&mut s);
assert_eq!(s, res);
}
``````

Having problems with this solution? Click here to submit an issue on github.