将缺少的左括号添加到公式中

Add missing left parentheses into equation

本文关键字:添加      更新时间:2023-10-16

我一直在为给定的问题寻找合适的解决方案,一直在互联网上寻找一些想法。找不到。

问题是:编写一个程序,从标准输入中获取一个不带左括号的表达式,并打印插入括号的等效中缀表达式。

给定表达式: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)

我们又打了一遍,再次从堆栈中抢到前 3 名,括号并推回去

(5-6)
*
(3-4)
*
(1+2)

我们抓住另一个括号,再次从堆栈中抓取前 3 名,括号并推回

((3-4)*(5-6))
*
(1+2)

再说一遍...

((1 + 2) * ((3 - 4) * (5 - 6)))

没有更多的输入,所以这是我们的答案