#35019: 到底有誰會把BufferedWriter塞進Stack裡啦?


liaoweichen1024@gmail.com (M_SQRT)

學校 : 新北市立新莊高級中學
編號 : 195452
來源 : [150.117.3.92]
最後登入時間 :
2024-11-21 20:54:31
i524. 11988: Broken Keyboard (a.k.a. Beiju Text) | From: [118.166.161.87] | 發表日期 : 2023-05-02 23:50

這題我的解題方法大致如下:
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能這樣寫,這篇解題報告就分享給你了。

 
#35022: Re: 到底有誰會把BufferedWriter塞進Stack裡啦?


liaoweichen1024@gmail.com (M_SQRT)

學校 : 新北市立新莊高級中學
編號 : 195452
來源 : [150.117.3.92]
最後登入時間 :
2024-11-21 20:54:31
i524. 11988: Broken Keyboard (a.k.a. Beiju Text) | From: [210.71.72.221] | 發表日期 : 2023-05-03 11:58

抱歉,敘述上有一點問題

遍歷輸入字元,遇到'['時:
(1) 將原本的buffer存到Stack
(2) 重新配置buffer記憶體位置 (不是clear)
(3) 接下來的字元都存到buffer (新配置的)

 
ZeroJudge Forum