利用栈“先进后出”的思想来进行反转。将原始字符串通过空格字符" "分解为多个子字符串,保存为字符串数组。遍历该数组将子字符进栈,进栈后还需要添加" "。值得注意的是,最后进栈的子字符串之后无需添加" ",因为其逆序后为字符串首字符。
import java.util.Stack;
public class Solution {
    public String ReverseSentence(String str) {
        if(str==null||str.length()==0)
    		return str;
    	StringBuilder res=new StringBuilder();
    	String[] tmp = str.split(" ");
    	if(tmp.length==0)
    		return str;
    	Stack<String>sx=new Stack<>();
    	for(int i=0;i<tmp.length-1;i++) {//tmp.length-1是保障第一个字符串进栈不需要再进栈“ ”
    		sx.push(tmp[i]);
    		sx.push(" ");
    	}
    	sx.push(tmp[tmp.length-1]);
    	while(!sx.isEmpty()) {
    		res.append(sx.pop());
    	}
    	return res.toString();
    }
}