這題我的解題方法大致如下:
String end, buffer; //方便理解,以String型別演示
遍歷輸入字元 {
switch(c)
]: 接下來的字元都+到end;
[: 將原本的buffer存到Stack,clear buffer,接下來的字元都存到新的buffer
}
提取出所有Stack內的字串並輸出
想來想去到底應該用哪種型別或類別來存資料,後來想到,BufferedWriter本身就是緩衝區,所以我的程式就出現了把一堆BufferedWriter塞進Stack的奇觀(上述的end和buffer的類別都是BufferedWriter),等處理完資料,再執行while(!stack.isEmpty()) stack.poll.flush();
就輸出完了。
三元運算子能回傳物件?
因為要判斷上一次按的是'['還是']',我設了一個flag,再我寫出一個冗餘的if_else後,我發現三元運算子居然能回傳物件,我只要這樣寫就好:(flag?buffer:end).append(c);
//我拿c遍歷字元
以前沒這樣寫過,沒有編譯錯誤實在是讓我驚訝。如果你也不知道java能這樣寫,這篇解題報告就分享給你了。
抱歉,敘述上有一點問題
遍歷輸入字元,遇到'['時:
(1) 將原本的buffer存到Stack
(2) 重新配置buffer記憶體位置 (不是clear)
(3) 接下來的字元都存到buffer (新配置的)