双栈解法

思路:

依次遍历字符串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;
}

}