https://leetcode.com/problems/reverse-words-in-a-string/
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 1:
public static String reverseWords(String s) {
String[] res = s.trim().split("\\s+");
StringBuilder ans = new StringBuilder();
for (int i = res.length-1; i >= 0; i--) {
if (i > 0) ans.append(res[i]).append(" ");
else ans.append(res[i]);
}
return ans.toString();
}
Solution 2:
public static String reverseWords(String s) {
String[] res = s.trim().split("\\s+");
Collections.reverse(Arrays.asList(res));
return String.join(" ", res);
}