题目描述

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)

思路

用一个辅助栈,按压入顺序进行压入。

先将压入顺序中的第一个数字压入辅助栈,然后与弹出顺序的第一个数字进行比较是否相等。

如果不相等,则继续往辅助栈压入数字,继续与弹出顺序的第一个数字进行比较是否相等。

如果是相等的,那就将这个压入辅助栈的数字弹出,然后弹出顺序往后移动一位,接着继续将辅助栈中的元素与弹出顺序里的数字比较。

如果比较过程中辅助栈中没有数字了,则继续将剩余数字压入辅助栈中。

只要最后辅助栈为空,则说明弹出顺序是此栈的弹出序列。

代码

import java.util.Stack;

public class Solution {

public boolean IsPopOrder(int [] pushA,int [] popA) {

if (pushA == null || pushA.length == 0 || popA == null || popA.length == 0

|| pushA.length != popA.length) {

return false;

}

Stack stack = new Stack<>();

// 记录弹出顺序中的索引

int popIndex = 0;

for (int i = 0; i < pushA.length; i++) {

stack.push(pushA[i]);

while (!stack.isEmpty() && stack.peek() == popA[popIndex]) {

stack.pop();

popIndex++;

}

}

return stack.isEmpty();

}

}

在栈中压入一个字符串c语言,面试题 31:栈的压入、弹出序列相关推荐

  1. 在栈中压入一个字符串c语言,一 道C语言试题的探讨

    对张孝祥C语言试题其中一题的探讨 当<绝对能够测试你的C语言功力的几个问题>第一次出现在CSDN首页时,我就进入了张老师Blog.客观上说,出的题目比较基础,但每一题都说出一个所以然来,恐 ...

  2. 《剑指offer》-- 栈的压入与弹出序列、把字符串转化为整数、扑克牌顺子、孩子们的游戏(圆圈中最后剩下的数)

    一.栈的压入与弹出序列: 1.题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序. 假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...

  3. char N2Char(int n)函数:将一个整数转换为字符串,并放入一个字符串中

    //将一个整数转换为字符串,并放入一个字符串中 char N2Char(int n)//一次只能转换一个数 {int i;char c;if ((i = n / 10) != 0)N2Char(i); ...

  4. 《剑指offer》:[22]如何判断一个序列是否为栈的弹出序列

    题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序. 假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压栈序列,序列4,5,3,2,1是该压栈序列 ...

  5. 剑指offer:面试题31. 栈的压入、弹出序列

    题目:栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 ...

  6. 剑指offer22:栈的压入、弹出序列

    题意: 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2, ...

  7. 【剑指offer-Java版】22栈的压入弹出序列

    栈的压入弹出序列:给定两个序列,一个是压入顺序,判断另外一个是否是该压入顺序的一个弹出顺序 思路:纯粹的模拟栈的压入和弹出顺序 分别遍历压栈序列seq1和另一个序列seq2 比较当前栈顶元素和seq2 ...

  8. 举例让抽象问题具体化:栈的压入、弹出序列

    输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一 ...

  9. 【数据结构】栈的压入、弹出序列

    题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等,例如序列1,2,3,4,5是某栈的压栈序列,序列,4,5,3,2,1是该压栈序列 ...

最新文章

  1. 《Google软件测试之道》- Google软件测试介绍
  2. GNU C中的零长度数组
  3. Linux系统驱动全吗,linux系统需要给硬件安装驱动程序么?谁推荐一下linux系统阿~要驱动最全...
  4. qbytearray初始化全0_【小白学PyTorch】4.构建模型三要素与权重初始化
  5. python正确的输入语句_Python If语句If输入是某个字符串
  6. android wear中国版,AndroidWear中国版App——小白上手指南
  7. I00001 杨辉三角
  8. pypdf2 存储pdf_PyPDF2:用于PDF文件操作的Python库
  9. 转载一下如何联系口语
  10. ASCII码,hex编码,String字符串相互转化及原理
  11. Java疯狂讲义读书笔记第一章
  12. Python3.5爬取cbooo.cn数据并且同步到mysql中
  13. edm邮件html模板,EDM模板使用说明
  14. (十一)简单的2维机器人仿真器
  15. 使用多个可选过滤器过滤 Eloquent 模型
  16. SDN南向接口和北向接口区别
  17. Python 内建函数 - complex([real[, imag]])
  18. 已知两角及其夹边,解三角形
  19. 谷歌今遭遇史上至暗时刻,美司法部正式提起反垄断诉讼!22年前微软曾有此劫-1
  20. Oracle like 走索引

热门文章

  1. Orleans的集群构建
  2. ASP.NET Core Razor页面 vs MVC
  3. 基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署
  4. 强势解析 eBay BASE 模式、去哪儿及蘑菇街分布式架构
  5. .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法
  6. Roslyn项目系统简介
  7. oracle 数据执行计划,Oracle里常见的执行计划
  8. zblog php 标题优化,Zblog分类页标题重复的优化 - 张力博客
  9. 利用MRT进行Modis NDVI数据(MOD13Q1)投影变换格式转换操作图文教程
  10. ArcGIS实验教程——实验十三:栅格空间插值分析