题目:

给出一个字符串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. 车厢调度(判断是否为合法的出栈序列)

    时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] 题目描述 有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合.假设从A方向驶来的火车有n节(n ...

  2. 数据结构实验之栈与队列七:出栈序列判定

    Description 给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次.输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序 ...

  3. 数据结构实验之栈七:出栈序列判定

    题目描述 给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次.输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序列. 例如序列 ...

  4. 详解+G - 数据结构实验之栈与队列七:出栈序列判定

    理解: 出入栈规律之一,如果前面有一个比较大的数,后面有连续的递增顺序,递增顺序>=2个小于前面比较大的数,那么此出栈顺序不可能实现.比如4,1,2,3,5. 思路:输入一个数,然后不断按照顺序 ...

  5. Bailian4077 出栈序列统计【卡特兰数】(vijos P1122)

    问题链接:vijos P1122 出栈序列统计. 出栈序列统计 总时间限制: 100ms 内存限制: 64kB 描述 栈是常用的一种数据结构,有n个元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列.你 ...

  6. 判断出栈序列合法性(c语言)

    判断出栈序列合法性 描述 格式 样例 题解及注释 描述 有1.2.3.4.5.6.7这7个数字依次全部入栈后再出栈,在入栈的过程中栈中的数据也可以随时出栈,一直到整个栈为空.将出栈得到的数字依次排列, ...

  7. 序列元素IT面试题——判断合法出栈序列

    本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~ 在技巧笔试口试上,我们常常会碰到这样一类题型,如给你一个入栈序列,然后再让你判断几个序列是否有可能为它的出栈序列,如: 入栈序 ...

  8. 数据结构:判断堆栈出栈序列是否有效

    描述:如果以序列"1,2,3,4"作为一个栈(初始为空)的输入,那么可得到输出序列"1,2,3,4"或"4,3,2,1"或"2,3 ...

  9. 给定入栈序列,判断一个串是否为出栈序列

    剑指offer22:给定入栈序列,判断一个串是否为出栈序列 public static boolean isOutStackSequence(int[] Spush, int[] Spop) {if ...

最新文章

  1. python画图三维-Python三维绘图之Matplotlib库的使用方法
  2. mysql超级_Mysql 超级快速入门
  3. 把所有的谎言献给你β
  4. 中国剩余定理 互质与非互质版本
  5. 应用容灾中,MySQL数据表是否需要跨云同步?
  6. 孙鑫VC学习笔记:第十三讲 (三) WM_FILE_NEW消息响应原理
  7. window7安装虚拟机上网
  8. 小Z解读:企业证书利用itms-services协议分发应用在蜂窝网络下的限制
  9. 用游戏编辑器制作MOD脱颖而出
  10. 好玩有趣的 iOS URL Scheme
  11. 我跟敏捷开发的故事--三面墙
  12. mysql代码check约束_CHECK约束(示例代码)
  13. 求职简历撰写要点和模板分享
  14. PKI 公钥基础设施原理与应用
  15. Speedoffice(word)中如何批量将小写字母变成大写字母?
  16. vulnhub Monitoring: 1
  17. 现代通信原理14.1:正交向量空间与正交信号空间
  18. oracle能对某一用户解锁,oracle用户解锁
  19. Internet Explorer无法下载 *** (来自 ***)。Internet Explorer无法打开该Internet站点。请求的站点不可用,或找不到。请以后再试。”
  20. 怎么使用CAM350检查Gerber?

热门文章

  1. python twisted教程 二:缓慢的诗
  2. Cowrie蜜罐的部署(ubt亲测)
  3. Windows驱动—VS2010+WDK配置驱动开发环境
  4. 线性表:顺序栈算法实现
  5. django博客项目7
  6. [笨木头FireFly 02]入门篇2_客户端发送请求,服务器处理请求
  7. 终于有人把AI、BI、大数据、数据科学讲明白了
  8. 为什么C语言仍然占据统治地位?
  9. 网易云音乐评论催泪刷屏?我用Python抓取了1008328条热评告诉你为什么!
  10. windows虚拟机_iOS 版虚拟机:在 iPhone 上运行 Windows 系统