Problem
Given an input string, reverse the string word by word.
Example:
Input: "the sky is blue",
Output: "blue is sky the".
Note:
- A word is defined as a sequence of non-space characters.
- Input string may contain leading or trailing spaces. However, your reversed string should not contain leading or trailing spaces.
- You need to reduce multiple spaces between two words to a single space in the reversed string.
Follow up: For C programmers, try to solve it in-place in O(1) space.
Solution (Java)
class Solution {
public String reverseWords(String s) {
String[] words = s.split("\\s+");
StringBuilder str = new StringBuilder();
for(int i = words.length - 1; i >= 0; --i){
str.append(words[i] + " ");
}
return str.toString().trim();
}
}
Solution (Javascript)
/**
* @param {string} str
* @returns {string}
*/
var reverseWords = function(str) {
return str.split(' ').filter(s => s !== '').reverse().join(' ');
};
Explain:
nope.
Complexity:
- Time complexity : O(n).
- Space complexity : O(n).