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.