您的位置:首页 > 编程语言 > Java开发

Java 判断栈的push和pop序列是否一致

2015-10-08 14:53 447 查看

判断栈的push和pop序列是否一致

import java.util.Stack;

/**
* 判断栈的push和pop序列是否一致
*
* @author ZHOUMI2
*
*/
public class StackTest {

// 判断栈的push和pop序列是否一致
public static boolean sequenseIsPop(int[] data1, int[] data2) {
Stack<Integer> stack = new Stack<Integer>();

for (int i = 0, j = 0; i < data1.length; i++) {
stack.push(data1[i]);

// 遇到一样的数据就开始退栈对比
while (stack.size() > 0 && stack.peek() == data2[j]) {
stack.pop();
j++;
}
}
// 如果栈大小为0,说明全部元素退栈成功,即匹配成功
return stack.size() == 0;
}

public static void main(String[] args) {

int[] data1 = { 1, 2, 3, 4, 5 };
int[] data2 = { 4, 5, 3, 2, 1 };
int[] data3 = { 4, 5, 2, 3, 1 };

System.out.println(sequenseIsPop(data1, data2));
System.out.println(sequenseIsPop(data1, data3));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: