算法練習(xí)(27):Stack運(yùn)用之解釋器(1.3.3-1.3.4)

本系列博客習(xí)題來(lái)自《算法(第四版)》榜掌,算是本人的讀書(shū)筆記,如果有人在讀這本書(shū)的竞穷,歡迎大家多多交流唐责。為了方便討論,本人新建了一個(gè)微信群(算法交流)瘾带,想要加入的鼠哥,請(qǐng)?zhí)砑游业奈⑿盘?hào):zhujinhui207407 謝謝。另外看政,本人的個(gè)人博客 http://www.kyson.cn 也在不停的更新中朴恳,歡迎一起討論

算法(第4版)

知識(shí)點(diǎn)

  • Java中Object類(lèi)介紹
  • Stack的運(yùn)用
  • 解釋器、詞法分析

題目

1.3.3 假設(shè)某個(gè)用例程序會(huì)進(jìn)行一系列入棧和出棧操作允蚣。入棧操作會(huì)將整數(shù)0到9按順序壓入棧于颖;出棧操作會(huì)打印返回值。下面哪種順序是不可能產(chǎn)生的嚷兔?


1.3.3 Suppose that a client performs an intermixed sequence of (stack) push and pop operations. The push operations put the integers 0 through 9 in order onto the stack; the pop operations print out the return values. Which of the following sequence(s) could not occur?

(a) 4 3 2 1 0 9 8 7 6 5
(b) 4 6 8 7 5 3 2 9 0 1
(c) 2 5 6 7 4 8 9 3 1 0
(d) 4 3 2 1 0 5 6 7 8 9
(e) 1 2 3 4 5 6 9 8 7 0
(f) 0 4 6 5 3 8 1 7 2 9
(g) 1 4 7 9 8 6 5 3 0 2
(h) 2 1 4 3 6 5 8 7 9 0

答案

b, f, g是不能產(chǎn)生的森渐。

代碼索引

無(wú)代碼

題目

1.3.4 編寫(xiě)一個(gè)Stack的用例Parentheses,從標(biāo)準(zhǔn)輸入中讀取一個(gè)文本流并使用棧判定其中的括號(hào)是否配對(duì)完整.例如[()]{}{[()]}為true,對(duì)于[(])程序則打印false。


1.3.4 Write a stack client Parentheses that reads in a text stream from standard input and uses a stack to determine whether its parentheses are properly balanced. For example, your program should print true for [()]{}{()()} and false for [(]).

分析

本人所有簡(jiǎn)書(shū)的算法文章詳細(xì)分析已經(jīng)移入小專(zhuān)欄:算法四習(xí)題詳解冒晰,歡迎大家訂閱

答案

public class Parentheses {

    public static void main(String[] args) {

//      String stream = "[()]{}{[()()]()}";
        String stream = "[(])";     
        boolean isPaired = true;
        
        Stack<String> ops = new Stack<String>();
        for (int i = 0; i < stream.length(); i++) 
        {
            char item = stream.charAt(i);
            String s = String.valueOf(item);
            
            if (s.equals("[")) {
                ops.push(s);
            }else if (s.equals("(")) {
                ops.push(s);
            }else if (s.equals("{")) {
                ops.push(s);
            }else if(s.equals("]"))
            {
                String popedString = ops.pop();
                if (!popedString.equals("[")) 
                {
                    isPaired = false;
                    break;
                }
            }else if(s.equals("}"))
            {
                String popedString = ops.pop();
                if (!popedString.equals("{")) 
                {
                    isPaired = false;
                    break;
                }
            }else if (s.equals(")")) 
            {
                String popedString = ops.pop();
                if (!popedString.equals("(")) 
                {
                    isPaired = false;
                    break;
                }
            }
        }
//最后加上這一句話同衣,確保站為空
                if (!ops.isEmpty()) {
            isPaired = false;
        }
        System.out.println(isPaired);       
    }
}

代碼索引

Parentheses.java

分析視頻

點(diǎn)此觀看分析視頻:頂級(jí)程序員教你學(xué)算法(27)-Stack運(yùn)用之解釋器(1.3.3-1.3.4)

廣告

我的首款個(gè)人開(kāi)發(fā)的APP壁紙寶貝上線了,歡迎大家下載壶运。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末耐齐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蒋情,更是在濱河造成了極大的恐慌埠况,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棵癣,死亡現(xiàn)場(chǎng)離奇詭異辕翰,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)浙巫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)金蜀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人的畴,你說(shuō)我怎么就攤上這事渊抄。” “怎么了丧裁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵护桦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我煎娇,道長(zhǎng)二庵,這世上最難降的妖魔是什么贪染? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮催享,結(jié)果婚禮上杭隙,老公的妹妹穿的比我還像新娘。我一直安慰自己因妙,他們只是感情好痰憎,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著攀涵,像睡著了一般铣耘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上以故,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天蜗细,我揣著相機(jī)與錄音,去河邊找鬼怒详。 笑死炉媒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的昆烁。 我是一名探鬼主播橱野,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼善玫!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起密强,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤茅郎,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后或渤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體系冗,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年薪鹦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掌敬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡池磁,死狀恐怖奔害,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情地熄,我是刑警寧澤华临,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站端考,受9級(jí)特大地震影響雅潭,放射性物質(zhì)發(fā)生泄漏揭厚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一扶供、第九天 我趴在偏房一處隱蔽的房頂上張望筛圆。 院中可真熱鬧,春花似錦椿浓、人聲如沸太援。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)粉寞。三九已至,卻和暖如春左腔,著一層夾襖步出監(jiān)牢的瞬間唧垦,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工液样, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留振亮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓鞭莽,卻偏偏與公主長(zhǎng)得像坊秸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子澎怒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345