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.
难度:medium
题目:给定字符串,反转字符串中的单词。
注意:单词指一组非空字符。输入的字符串可能包含前后空格。你需要在两个单词之间只保留一个空格。思路:先反转,然后逐个单词反转。
Runtime: 9 ms, faster than 37.01% of Java online submissions for Reverse Words in a String.
Memory Usage: 38.8 MB, less than 100.00% of Java online submissions for Reverse Words in a String.public class Solution { public String reverseWords(String s) { StringBuilder sb = new StringBuilder(" " + s + " "); sb.reverse(); StringBuilder result = new StringBuilder(); int begin = 0; for (int i = 0; i < sb.length() - 1; i++) { char c1 = sb.charAt(i); char c2 = sb.charAt(i + 1); if (c1 == ' ' && c2 != ' ') { begin = i; } else if (c1 != ' ' && c2 == ' ') { for (int j = i; j >= begin; j--) { result.append(sb.charAt(j)); } } } return result.toString().trim(); }}