栈的压入和弹出队列匹配-关于Stack的用法问题

栈的压入、弹出序列

http://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106

1.即使是用JAVA给的Stack类,也要注意栈的判空问题,因为库函数Pop()是会因为栈空抛出异常的,所以要处理一下判栈空的问题,具体仔细看代码,另外要记得不要调换条件判断顺序,切记&&的左右先后作用哦!
2.永远不要忘记对函数参数进行是否符合题意的判断;
3.另外记得这道题并没有默认两个数组的元素都是同样的数值范围,所以结尾的栈空的判断不可少。
上代码:

import java.util.ArrayList;
import java.util.Stack;

public class Solution {
    public boolean IsPopOrder(int [] pushA,int [] popA) {
        if(pushA.length==0||popA.length==0||pushA.length!=popA.length){
            return false;
        }
        Stack<Integer>s=new Stack<>();
        int length=pushA.length;

        int j=0;

        for(int i=0;i<length;i++){
            if(popA[j]==pushA[i]){
                j++;
                while(!s.empty()&&s.peek()==popA[j]){
                    s.pop();
                    j++;
                }
                if(!s.empty()&&s.search(popA[j])!=-1){
                    return false;
                }
            }else{
                s.push(pushA[i]);
            }
        }
        if(s.empty())return true;
        else{
            return false;
        }
    }
}
全部评论

相关推荐

小万喜欢吃牛油:很多是多少,我不想被 误导了,简历没有什么大问题,如果只有几十家,投到一百多家再说吧
投递几十家公司,到现在0...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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