翻转单词顺序列进栈思路题解

翻转单词顺序列

http://www.nowcoder.com/questionTerminal/3194a4f4cf814f63919d0790578d51f3

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


全部评论
其实你循环那里从后往前append就可以了,没必要用stack
1 回复 分享
发布于 2020-03-30 17:35

相关推荐

无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
3 收藏 评论
分享
牛客网
牛客企业服务