[程序人生]: 判断字符串是否为出栈序列
生活随笔
收集整理的這篇文章主要介紹了
[程序人生]: 判断字符串是否为出栈序列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:
給出一個字符串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
總結
以上是生活随笔為你收集整理的[程序人生]: 判断字符串是否为出栈序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Perl中的替换(七)
- 下一篇: ps aux 命令分析