186. Reverse Words in a String II
Difficulty: Medium
Topics: String
Similar Questions:
Problem:
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?
Solutions:
class Solution {
public:
void reverseWords(vector<char>& s) {
int start = 0;
int end = 0;
while (start < s.size()) {
end = start + 1;
while (end < s.size() && s[end] != ' ') ++end;
reverse(s, start, end - 1);
start = end + 1;
}
reverse(s, 0, s.size() - 1);
}
void reverse(vector<char>& s, int start, int end) {
while (start < end) {
swap(s[start], s[end]);
++start;
--end;
}
}
};