我相當堅持爲給定問題尋找適當的解決方案,一直在尋找通過互聯網的一些想法。無法找到任何。在方程中添加缺少的左括號
問題是:編寫一個程序,該程序從標準輸入中取出沒有左括號的表達式,並打印插入括號的等效中綴表達式。
定表達式:1 + 2) * 3 - 4)* 5 - 6)))
輸出:((1 + 2) * ((3 - 4) * (5 - 6)))
有什麼可以解決這個問題最好的辦法?
我相當堅持爲給定問題尋找適當的解決方案,一直在尋找通過互聯網的一些想法。無法找到任何。在方程中添加缺少的左括號
問題是:編寫一個程序,該程序從標準輸入中取出沒有左括號的表達式,並打印插入括號的等效中綴表達式。
定表達式:1 + 2) * 3 - 4)* 5 - 6)))
輸出:((1 + 2) * ((3 - 4) * (5 - 6)))
有什麼可以解決這個問題最好的辦法?
我認爲我們的目標是假定你只是括號表達式而不是單獨的數字。
所以你要抓住每個令牌和他們折騰一摞
2
+
1
抓下一個記號,這是) 現在拿前三名堆棧內且夾着它的括號之間( 1 + 2),將它作爲一個表達式放回棧中。
下一個推棧看起來像這樣
4
-
3
*
(1 + 2)
拉出前三名,並把它背在棧上括號 (3-4) * (1 + 2)
和再次
6
-
5
*
(3-4)
*
(1+2)
我們擊中另一個paren並再次從棧中抓取前3,加括號並推回
(5-6)
*
(3-4)
*
(1+2)
我們去搶另一個的括號,再次抓住從堆棧頂部3,圓括號和推回
((3-4)*(5-6))
*
(1+2)
,並再次...
((1 + 2) * ((3 - 4) * (5 - 6)))
沒有更多的投入,所以這是我們的答案
你怎麼知道它不應該是'1 +((2)* 3 - ((4)* 5 - (6)))'? –
你只想在前一個右括號的後面的操作數之後加一個左括號嗎? – jab
@lc,導致輸出格式已作爲答案給出。 –