[程序人生]: 判断字符串是否为出栈序列
题目:
给出一个字符串Initial和另一个字符串Detection,判断Detection是否为Initial的一个出栈序列
如:Initial = 123456, Detection = 213654, 则Detection是Initial的一个出栈序列
思路一:可以使用栈
代码:
public static boolean bStackOrder(String Initial, String Detection){if( Initial== null || Detection == null || Initial.length()==0 ||Detection.length() ==0 || Initial.length() != Detection.length() ){return false;}boolean bResult = false;char[] charInitial = Initial.toCharArray();char[] charDetection = Detection.toCharArray(); Stack<Character> StackTemp = new Stack<Character>();int iFalg = 0;for(int i = 0; i<charDetection.length; i++ ){if(iFalg <charInitial.length && charDetection[i] == charInitial[iFalg]){ //需要检测的字符与原始字符下一个位置一样的话,则做一套出栈,入栈的操作,也就相当于临时栈不动,原始字符串的标志位后移一位iFalg ++ ;}else{if(StackTemp.size() == 0 || charDetection[i] != StackTemp.peek()){ //需要检测的字符是否与临时栈的栈顶一致,一致的话出战,不一致的话入栈//临时栈先入栈到待检查字符的第一个位置while(charInitial[iFalg] != charDetection[i]){if(iFalg +1 < charInitial.length){ StackTemp.push(charInitial[iFalg]);iFalg ++;}else{System.out.println("111111111111111111111111111111111111");return false; //待检查字符串的字符就不在原始字符中 }}iFalg ++; //找到对应的字符, 则做一套出栈,入栈的操作,也就相当于临时栈不动,原始字符串的标志位后移一位 }else{//临时栈出栈if(StackTemp.size() != 0){ //临时栈是否已经空了System.out.println("Pop :" + StackTemp.peek());StackTemp.pop();}else{System.out.println("3333333333333333333333333333333333333");return false;//临时栈是否已经空了,无法出栈,所以两个字符不匹配 }}}}if(iFalg != charInitial.length || StackTemp.size() != 0){System.out.println("44444444444444444444444444444444444");System.out.println("iFalg :" + iFalg); System.out.println("StackTemp.size :" + StackTemp.size()); return false;}else{return true;}}
转载于:https://www.cnblogs.com/savageclc26/p/4918438.html
[程序人生]: 判断字符串是否为出栈序列相关推荐
- 车厢调度(判断是否为合法的出栈序列)
时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] 题目描述 有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合.假设从A方向驶来的火车有n节(n ...
- 数据结构实验之栈与队列七:出栈序列判定
Description 给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次.输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序 ...
- 数据结构实验之栈七:出栈序列判定
题目描述 给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次.输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序列. 例如序列 ...
- 详解+G - 数据结构实验之栈与队列七:出栈序列判定
理解: 出入栈规律之一,如果前面有一个比较大的数,后面有连续的递增顺序,递增顺序>=2个小于前面比较大的数,那么此出栈顺序不可能实现.比如4,1,2,3,5. 思路:输入一个数,然后不断按照顺序 ...
- Bailian4077 出栈序列统计【卡特兰数】(vijos P1122)
问题链接:vijos P1122 出栈序列统计. 出栈序列统计 总时间限制: 100ms 内存限制: 64kB 描述 栈是常用的一种数据结构,有n个元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列.你 ...
- 判断出栈序列合法性(c语言)
判断出栈序列合法性 描述 格式 样例 题解及注释 描述 有1.2.3.4.5.6.7这7个数字依次全部入栈后再出栈,在入栈的过程中栈中的数据也可以随时出栈,一直到整个栈为空.将出栈得到的数字依次排列, ...
- 序列元素IT面试题——判断合法出栈序列
本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~ 在技巧笔试口试上,我们常常会碰到这样一类题型,如给你一个入栈序列,然后再让你判断几个序列是否有可能为它的出栈序列,如: 入栈序 ...
- 数据结构:判断堆栈出栈序列是否有效
描述:如果以序列"1,2,3,4"作为一个栈(初始为空)的输入,那么可得到输出序列"1,2,3,4"或"4,3,2,1"或"2,3 ...
- 给定入栈序列,判断一个串是否为出栈序列
剑指offer22:给定入栈序列,判断一个串是否为出栈序列 public static boolean isOutStackSequence(int[] Spush, int[] Spop) {if ...
最新文章
- python画图三维-Python三维绘图之Matplotlib库的使用方法
- mysql超级_Mysql 超级快速入门
- 把所有的谎言献给你β
- 中国剩余定理 互质与非互质版本
- 应用容灾中,MySQL数据表是否需要跨云同步?
- 孙鑫VC学习笔记:第十三讲 (三) WM_FILE_NEW消息响应原理
- window7安装虚拟机上网
- 小Z解读:企业证书利用itms-services协议分发应用在蜂窝网络下的限制
- 用游戏编辑器制作MOD脱颖而出
- 好玩有趣的 iOS URL Scheme
- 我跟敏捷开发的故事--三面墙
- mysql代码check约束_CHECK约束(示例代码)
- 求职简历撰写要点和模板分享
- PKI 公钥基础设施原理与应用
- Speedoffice(word)中如何批量将小写字母变成大写字母?
- vulnhub Monitoring: 1
- 现代通信原理14.1:正交向量空间与正交信号空间
- oracle能对某一用户解锁,oracle用户解锁
- Internet Explorer无法下载 *** (来自 ***)。Internet Explorer无法打开该Internet站点。请求的站点不可用,或找不到。请以后再试。”
- 怎么使用CAM350检查Gerber?