题解 | #翻转单词序列#

翻转单词序列

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

双栈解法

思路:

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

}

阿勇算法解集 文章被收录于专栏

对一些基础的,经典的题目的算法题解,每道题的题解尽量做到一题多解,举一反三。其中每一个题解中,若是参考了其他牛人的想法,我会备注出来。

全部评论

相关推荐

认真搞学习:这么良心的老板真少见
点赞 评论 收藏
分享
头顶尖尖的程序员:我是26届的不太懂,25届不应该是找的正式工作吗?为什么还在找实习?大四还实习的话是为了能转正的的岗位吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务