标题: | |
通过率: | 14.8% |
难度: | 中等 |
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",return "blue is sky the
". Update (2015-02-12):
For C programmers: Try to solve it in-place in O(1) space. Clarification:
- What constitutes a word?A sequence of non-space characters constitutes a word.
- Could the input string contain leading or trailing spaces?Yes. However, your reversed string should not contain leading or trailing spaces.
- How about multiple spaces between two words?Reduce them to a single space in the reversed string.
本本题思路比较清晰,就是遇到空格就是停止然后开始跳空格,最后进行迭代操作,具体代码如下:
1 public class Solution { 2 public String reverseWords(String s) { 3 s = s.trim(); 4 return helper(s,0).toString(); 5 6 } 7 private StringBuilder helper(String s, int index) 8 { 9 if(index>=s.length())10 return new StringBuilder(); 11 StringBuilder cur = new StringBuilder();12 int lastIndex = index;13 while(index < s.length() && s.charAt(index)!=' ')14 {15 cur.append(s.charAt(index++));16 }17 while(index < s.length() && s.charAt(index)==' ')18 index++;19 if(lastIndex == 0)20 return helper(s,index).append(cur);21 return helper(s,index).append(cur).append(' ');22 }23 }