例如,我要问这个问题:
subStack:[7,15,9]
还有主堆栈:
mainStack:[45,24,18,7,8,233,91,531,7,15,9,45,32,1]
我要的是-subStack
是否在mainStack
中。
我在论文中都在挣扎,我很乐意得到一些帮助。谢谢!
答案 0 :(得分:1)
s1-主堆栈,s2-子堆栈???和s3-临时堆栈
您可以在堆栈s1和s2上进行窥视和比较,如果它们匹配,则可以从s1和s2弹出,将s2的流行存储在s3中。如果s2为空,则s2为s1的子堆栈,否则从s3恢复s2,重复上述步骤,直到s1或s2为空。
private boolean isSubStack(java.util.Stack<Integer> s1, java.util.Stack<Integer> s2) {
while (!s1.isEmpty() && !s2.isEmpty()) {
while (!s1.isEmpty() && s1.peek() != s2.peek()) {
s1.pop();
}
java.util.Stack<Integer> s3 = new java.util.Stack<Integer>();
while (!s1.isEmpty() && !s2.isEmpty() && s2.peek().equals(s1.peek())) {
s1.pop();
s3.push(s2.pop());
}
if (!s2.isEmpty()) {
while (!s3.isEmpty()) {
s2.push(s3.pop());
}
}
}
return s2.isEmpty();
}