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.
思路
1. split by a single or multiple spaces, making sure remove leading or trailing spaces
2. to reverse, traverse the input from right to left, append each item into StringBuilder
代码
1 public class Solution { 2 public String reverseWords(String s) { 3 // corner case 4 if(s == null || s.length() == 0) return ""; 5 // s.trim() 去除leading or trailing spaces 6 // s.split("\\s+")根据a single or multiple spaces 来split字符串 7 String[] words = s.trim().split("\\s+"); 8 // use StringBuilder to save result 9 StringBuilder sb = new StringBuilder(); 10 // to reverse, from right to left 11 for(int i = words.length-1; i >= 0; i--){ 12 sb.append(words[i]+" "); 13 } 14 // 确保结果中去除了leading or trailing spaces 15 return sb.toString().trim(); 16 } 17 }
转载于:https://www.cnblogs.com/liuliu5151/p/9901268.html
