概述
判断输出序列是否为所给序列
逻辑
首先判断两数组长度,若所给序列数组长于输入数组,则输出序列肯定不是所给序列。
将输入序列进栈,判断栈顶元素是否与输出序列相同,不同则继续进栈,相同则栈顶元素出栈,直到栈空或者栈顶元素与对应输出序列元素不同时结束循环,继续进展。
最终判断输出序列数组下标是否为order.length。是则输出true,其他输出false。
图解
程序
import java.util.Stack;
public class Test0921 {
public static <T> boolean isStackOutOrder(T[] arr, T[] order) {
if (arr.length < order.length) {//判断输出数组是否比输入数组长
return false;
}
Stack<T> stack = new Stack<>();
int i = 0, j = 0;
while (i < arr.length&&j<order.length) {
stack.push(arr[i]);//元素进栈
while (stack.size() > 0 && stack.peek() == order[j]) {
//循环输出与order对应的栈顶元素
stack.pop();
j++;
}
i++;
}
if(j==order.length){
return true;
}
return false;
}
public static <T> void main(String[] args) {
boolean result = isStackOutOrder(new Integer[]{1, 2, 3, 4, 5}, new Integer[]{2,1,3, 5, 4});
System.out.print(result);
}
}
最后
以上就是笨笨眼睛为你收集整理的判断输出序列是否为所给序列判断输出序列是否为所给序列的全部内容,希望文章能够帮你解决判断输出序列是否为所给序列判断输出序列是否为所给序列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复