亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么要用【棧】來檢測字符串“111(222)333”中包含的小括號是否配對。。。求指點

為什么要用【?!縼頇z測字符串“111(222)333”中包含的小括號是否配對。。。求指點

迷失代碼林 2017-04-24 01:13:01
剛學到數據結構,奇怪的是第一次找不到這類的視頻了,一搜全是C語言的,書上又說的不夠清楚。這個題目一眼看到我就會聯想到去用String的方法或數組來解答,書上用棧來解答說明這是棧的一個典型用法,那么能體現棧的什么優點呢?書上的解題代碼:????Stack?ss?=new?SequenceStack();//定義棧對象 ????String?s="111(222)333; ????int?size=s.length(); ????boolean?flag?=false; ????for(int?i=0;i<size;i++){ ????????char?c=s.charAt(i); ????????switch(c){ ????????????case?40://左括號“(” ????????????ss.push("(");//入棧 ????????????break; ????????????case?41://右括號“)” ????????????if(ss.pop().equals(")"){ ????????????????flag=true; ????????????} ????????} ????} ????System.out.print("括號配對為:"+flag);書上有分析說“可以使用棧來存儲字符串中的小括號。遍歷字符串中的每個字符,遇到‘(’則入棧,遇到‘)’則出棧,查看出棧的元素是否為‘)’,如果為‘)’則配對,否則不配對”。如果字符串就只有這么半個括號,flag不也是為true嗎,但事實半個括號明顯是不完整的,都不成對,就更談不上配對了啊。還有上面的分析里說左括號進棧我理解,右括號出棧我就不理解了,不要它可以不讓它進棧,可是根本沒讓它進棧過又怎么讓它出棧呢?所謂難者不會,會者不難,我在這上面浪費很多時間了,請各位高手幫忙指點迷津,謝謝了!
查看完整描述

1 回答

已采納
?
Caballarii

TA貢獻1123條經驗 獲得超629個贊

碰到左括號就進棧,碰到右括號是把棧里的左括號出棧一個,這樣一對括號就匹配了。最后結果有三種情況

  1. 運行結束了棧不是空的,說明左括號比右括號多,括號不匹配

  2. 運行結束??樟?,說明左右括號一樣多,匹配了

  3. 運行過程中棧為空的時候又碰到右括號要求出棧,說明這個右括號沒有左括號匹配,括號不匹配

查看完整回答
1 反對 回復 2017-04-24
  • Caballarii
    Caballarii
    你貼的這段代碼錯漏百出,也運行不出正確結果
  • 迷失代碼林
    迷失代碼林
    是的,書上就這么寫的,把我看暈了。經你這么一說我懂了,謝謝指點!
  • 1 回答
  • 0 關注
  • 1526 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號