[程序人生]: 判断字符串是否为出栈序列
2015-10-28 19:43
309 查看
题目:
给出一个字符串Initial和另一个字符串Detection,判断Detection是否为Initial的一个出栈序列
如:Initial = 123456, Detection = 213654, 则Detection是Initial的一个出栈序列
思路一:可以使用栈
代码:
给出一个字符串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; } }
相关文章推荐
- listbox
- struts2文件下载相关信息
- 【Python】python-一个class继承的小case
- Android--Fragment的懒加载
- LeetCode---Binary Tree Right Side View
- uva657 The die is cast
- 选择排序
- iOS界面跳转与返回代码实现(Objective-C)
- 街舞风雷
- 二叉树的创建和遍历
- hdu2551 竹青遍野
- cocos2dx三种定时器的使用
- 《大道至简》第五章读后感
- NOI题库1.5.18角谷猜想
- Date语意学 Data Member的存取
- servlet和struts2的区别和联系
- Swift解析:将推动应用开发巨变
- ACM-ICPC沈阳区域赛D
- 关于多线程的小例子,快速上手!无需停留!!!
- JS下的每个字符串都是个对象