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.
Analysis:我想的是使用两个Stack来转换顺序,Code 没有Accepted, 大家帮我找错
public class Solution {
public String reverseWords(String s) {
char[] sArray = s.toCharArray();
Stack<Character> stack = new Stack<Character>();
Stack<Character> temStack = new Stack<Character>();
int length = sArray.length;
//This is to store the result of the stringBuffer
StringBuffer result = new StringBuffer();
for(int i = 0; i < sArray.length; i++){
temStack.push(sArray[i]);
}
while(!temStack.isEmpty()){
char tem = (Character) temStack.pop();
if(helper(tem)){
stack.push(tem);
}
else if(tem == ' '){
boolean judge = false;
while(!stack.isEmpty()){
char temChar = (Character) stack.pop();
result.append(temChar);
judge = true;
}
if(judge)
result.append(' ');
}
}
while(!stack.isEmpty()){
char temChar = (Character) stack.pop();
result.append(temChar);
}
return result.length() == 0? "" : result.substring(0,result.length());
}
public boolean helper(char tem){
if((tem > 'a' && tem < 'z') || (tem > 'A' && tem < 'Z')){
return true;
}
return false;
}
}