入棧出棧問題

聲明: 本總結(jié)僅為個人學習總結(jié)尿孔,以防止遺忘而作潘明,不得轉(zhuǎn)載和商用。
給定無重復(fù)元素的兩個等長數(shù)組,分別表述入棧序列和出棧序列,
請問:這樣的出棧序列是否可行
如:入棧序列為"ABCDEFG",出棧序列為"BAEDFGC",則可行
入棧序列"ABCD",出棧序列"BDAC",不可行
分析:
1.使用一個堆棧S來模擬壓棧出棧的操作.記入棧序列為A,出棧序列為B
2.遍歷B的每個元素b:
(1).若b等于棧頂元素s,恰好匹配,則檢查B的下一個元素,棧頂元素s出棧;
若棧s為空,則認為b無法與棧內(nèi)元素匹配,則調(diào)用(2)
(2).若b不等于棧頂元素s,則將A的當前元素入棧,目的是希望在A的剩余元素中找到b
Java版本實現(xiàn):

public static boolean isPossible(char[] in, char[] out){
        Stack<Character> stack = new Stack<>();
        int i=0;
        int j=0;
        while(i<out.length){
            if (!stack.isEmpty()) {
                if (stack.peek() == out[i]) {
                    stack.pop();
                    i++;
                }else {
                    if (j > in.length-1) {//如果in遍歷完,則返回false
                        return false;
                    }
                    stack.push(in[j]);
                    j++;
                }
            }else {
                if (j > in.length-1) {
                    return false;
                }
                stack.push(in[j]);
                j++;
            }
        }
        return true;
    }

測試代碼:

public static void main(String[] args) {
        String in = "ABCDEFG";
        String out = "BAEDFGC";
        boolean b = isPossible(in.toCharArray(), out.toCharArray());
        System.out.println(b);
        in = "ABCD";
        out = "BDAC";
        b = isPossible(in.toCharArray(), out.toCharArray());
        System.out.println(b);
    }

輸出結(jié)果:
true
false
代碼可進一步優(yōu)化沙廉,合并判斷分支嗓节,如下:

public static boolean isPossible2(char[] in, char[] out){
        Stack<Character> stack = new Stack<>();
        int i=0;
        int j=0;
        while(i<out.length){//遍歷out的每一個字符
            if (!stack.isEmpty() && stack.peek() == out[i]) {
                stack.pop();
                i++;
            }else {
                if (j > in.length-1) {//如果in遍歷完,則返回false
                    return false;
                }
                stack.push(in[j]);
                j++;
            }
        }
        return true;
    }

同樣可以實現(xiàn)上述功能,代碼看上去更簡潔橱乱。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辜梳,一起剝皮案震驚了整個濱河市粱甫,隨后出現(xiàn)的幾起案子泳叠,更是在濱河造成了極大的恐慌,老刑警劉巖茶宵,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件危纫,死亡現(xiàn)場離奇詭異,居然都是意外死亡乌庶,警方通過查閱死者的電腦和手機种蝶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞒大,“玉大人螃征,你說我怎么就攤上這事⊥傅校” “怎么了盯滚?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長酗电。 經(jīng)常有香客問我魄藕,道長,這世上最難降的妖魔是什么撵术? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任背率,我火速辦了婚禮,結(jié)果婚禮上嫩与,老公的妹妹穿的比我還像新娘寝姿。我一直安慰自己,他們只是感情好划滋,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布饵筑。 她就那樣靜靜地躺著,像睡著了一般古毛。 火紅的嫁衣襯著肌膚如雪翻翩。 梳的紋絲不亂的頭發(fā)上都许,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音嫂冻,去河邊找鬼胶征。 笑死,一個胖子當著我的面吹牛桨仿,可吹牛的內(nèi)容都是我干的睛低。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼服傍,長吁一口氣:“原來是場噩夢啊……” “哼钱雷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吹零,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤罩抗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后灿椅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體套蒂,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年茫蛹,在試婚紗的時候發(fā)現(xiàn)自己被綠了操刀。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡婴洼,死狀恐怖骨坑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情柬采,我是刑警寧澤欢唾,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站警没,受9級特大地震影響匈辱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜杀迹,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一亡脸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧树酪,春花似錦浅碾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疮茄,卻和暖如春滥朱,著一層夾襖步出監(jiān)牢的瞬間根暑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工徙邻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留排嫌,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓缰犁,卻偏偏與公主長得像淳地,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子帅容,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于阿里的一道面試題颇象,如果abcdef順序入棧,那么下面不可能出現(xiàn)的出棧順序是: 對于這樣的題并徘,也不是無規(guī)律可循遣钳,...
    夏廣成閱讀 7,368評論 0 1
  • 1、算法的概念 (1)概念:是指解題方案的準確而完整的描述饮亏。 【考題1】在計算機中耍贾,算法是指() A查詢方法B加工...
    成都小菜閱讀 1,564評論 0 15
  • 從三月份找實習到現(xiàn)在,面了一些公司路幸,掛了不少,但最終還是拿到小米付翁、百度简肴、阿里、京東百侧、新浪砰识、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,192評論 11 349
  • 中學歷史就對軍閥階段比較混淆佣渴,所以開始對一部講張學良的電視劇不感冒辫狼。周末在樂樂家邊吃飯邊看電視,覺得少帥很有味兒辛润,...
    cindy幸福在路上閱讀 405評論 1 1
  • 這兩天項目需要將報文以xml格式推送給核心膨处,過程中使用到RestTemplate,并且在自己拼接xml時使用了St...
    James2119閱讀 2,489評論 0 0