利用栈“先进后出”的思想来进行反转。将原始字符串通过空格字符" "分解为多个子字符串,保存为字符串数组。遍历该数组将子字符进栈,进栈后还需要添加" "。值得注意的是,最后进栈的子字符串之后无需添加" ",因为其逆序后为字符串首字符。
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();
}
} 
京公网安备 11010502036488号