双栈解法
思路:
依次遍历字符串str,如果元素不等于空格,则直接入栈1;如果元素等于空格,则将栈1的所有元素存到栈2,同时将空格也存到栈2中。遍历完如果字符串不是以空格结尾的话,栈1中还存有单词,所以要再把栈1的元素都存到栈2中。最后将栈2元素出栈并拼接成最终返回的字符串。
import java.util.Stack;
public class Solution {
public String ReverseSentence(String str) {
Stack<Character> stk1 = new Stack<>();
Stack<Character> stk2 = new Stack<>();
for(int i=0;i<str.length();++i){
char c = str.charAt(i);
if(c != ' '){
stk1.push(c);
} else {
while(!stk1.isEmpty()){
stk2.push(stk1.pop());
}
stk2.push(c);
}
}
while(!stk1.isEmpty()){
stk2.push(stk1.pop());
}
String res = "";
while(!stk2.isEmpty()){
res += stk2.pop();
}
return res;
}
}