在栈中压入一个字符串c语言,面试题 31:栈的压入、弹出序列
题目描述
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列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:栈的压入、弹出序列相关推荐
- 在栈中压入一个字符串c语言,一 道C语言试题的探讨
对张孝祥C语言试题其中一题的探讨 当<绝对能够测试你的C语言功力的几个问题>第一次出现在CSDN首页时,我就进入了张老师Blog.客观上说,出的题目比较基础,但每一题都说出一个所以然来,恐 ...
- 《剑指offer》-- 栈的压入与弹出序列、把字符串转化为整数、扑克牌顺子、孩子们的游戏(圆圈中最后剩下的数)
一.栈的压入与弹出序列: 1.题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序. 假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...
- char N2Char(int n)函数:将一个整数转换为字符串,并放入一个字符串中
//将一个整数转换为字符串,并放入一个字符串中 char N2Char(int n)//一次只能转换一个数 {int i;char c;if ((i = n / 10) != 0)N2Char(i); ...
- 《剑指offer》:[22]如何判断一个序列是否为栈的弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序. 假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压栈序列,序列4,5,3,2,1是该压栈序列 ...
- 剑指offer:面试题31. 栈的压入、弹出序列
题目:栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 ...
- 剑指offer22:栈的压入、弹出序列
题意: 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2, ...
- 【剑指offer-Java版】22栈的压入弹出序列
栈的压入弹出序列:给定两个序列,一个是压入顺序,判断另外一个是否是该压入顺序的一个弹出顺序 思路:纯粹的模拟栈的压入和弹出顺序 分别遍历压栈序列seq1和另一个序列seq2 比较当前栈顶元素和seq2 ...
- 举例让抽象问题具体化:栈的压入、弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一 ...
- 【数据结构】栈的压入、弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等,例如序列1,2,3,4,5是某栈的压栈序列,序列,4,5,3,2,1是该压栈序列 ...
最新文章
- 《Google软件测试之道》- Google软件测试介绍
- GNU C中的零长度数组
- Linux系统驱动全吗,linux系统需要给硬件安装驱动程序么?谁推荐一下linux系统阿~要驱动最全...
- qbytearray初始化全0_【小白学PyTorch】4.构建模型三要素与权重初始化
- python正确的输入语句_Python If语句If输入是某个字符串
- android wear中国版,AndroidWear中国版App——小白上手指南
- I00001 杨辉三角
- pypdf2 存储pdf_PyPDF2:用于PDF文件操作的Python库
- 转载一下如何联系口语
- ASCII码,hex编码,String字符串相互转化及原理
- Java疯狂讲义读书笔记第一章
- Python3.5爬取cbooo.cn数据并且同步到mysql中
- edm邮件html模板,EDM模板使用说明
- (十一)简单的2维机器人仿真器
- 使用多个可选过滤器过滤 Eloquent 模型
- SDN南向接口和北向接口区别
- Python 内建函数 - complex([real[, imag]])
- 已知两角及其夹边,解三角形
- 谷歌今遭遇史上至暗时刻,美司法部正式提起反垄断诉讼!22年前微软曾有此劫-1
- Oracle like 走索引
热门文章
- Orleans的集群构建
- ASP.NET Core Razor页面 vs MVC
- 基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署
- 强势解析 eBay BASE 模式、去哪儿及蘑菇街分布式架构
- .NET Core中间件的注册和管道的构建(3) ---- 使用Map/MapWhen扩展方法
- Roslyn项目系统简介
- oracle 数据执行计划,Oracle里常见的执行计划
- zblog php 标题优化,Zblog分类页标题重复的优化 - 张力博客
- 利用MRT进行Modis NDVI数据(MOD13Q1)投影变换格式转换操作图文教程
- ArcGIS实验教程——实验十三:栅格空间插值分析