LeetCode-Reverse Words in a String

LiBlog發表於2015-01-05

Given an input string, reverse the string word by word.

For example,
Given s = "the sky is blue",
return "blue is sky the".

click to show clarification.

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.
Have you met this question in a real interview?
 
Solution:
 1 public class Solution {
 2     public String reverseWords(String s) {
 3         s = s.trim();
 4 
 5         StringBuffer buff = new StringBuffer();
 6         int start = s.length()-1;
 7         while (start>=0){
 8             //Search the next work.
 9             int end = start;
10             while (end>=0 && s.charAt(end)!=' ') end--;
11             String word = s.substring(end+1,start+1);
12             buff.append(word);
13             if (end>0) buff.append(" ");
14 
15             //skip all the following spaces.
16             while (end>=0 && s.charAt(end)==' ') end--;
17             start = end;
18         }
19 
20         return buff.toString();
21     }
22 }

 

相關文章