leetcode------Reverse Words in a String
标题: | Reverse Words in a String |
通过率: | 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 }