/**
* 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序
* @author Q.Yuan
*
*/
public class SequenceOfStack {
public boolean stackSeq(int[] a,int[] b){
if(a.length != b.length || a.length == 0){
return false;
}
int pa = 0;
int pb = 0;
Stack<Integer> stack = new Stack<Integer>();
while(pa < a.length && pb < b.length){
stack.push(a[pa++]);
if(stack.peek() != b[pb]){
continue;
}
while(stack.size()!=0 && pb < b.length && stack.peek() == b[pb]){
stack.pop();
pb++;
}
}
if(stack.size() != 0 || pb != b.length)
return false;
return true;
}
public static void main(String[] args) {
SequenceOfStack ss = new SequenceOfStack();
int[] a = {1,2,3,4,5};
int[] b = {1,2,3,5,4};
System.out.println(ss.stackSeq(a, b));
}
}
栈的压入、弹出序列
最新推荐文章于 2018-08-31 14:42:12 发布