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