您会得到一个由字符组成的字符串0123456789+*()
。您可以假定字符串始终是有效的数学表达式。
您的任务是删除不必要的括号,假设乘法的优先级高于加法。
仅在结构上不需要括号时,才应删除括号:
- 由于乘法具有更高的优先级:
3+(4*5)
=>3+4*5
- 由于乘法或加法关联:
3*(4*5)
=>3*4*5
- 当它们在表达式周围多余时:
3*((4+5))
=>3*(4+5)
由于特定的数字值,在可以简化时应保留括号:
1*(2+3)
不应该简化为1*2+3
0*(1+0)
不应该简化为0*1+0
例子:
(4*12)+11 ==> 4*12+11
(1+2)*3 ==> (1+2)*3
3*(4*5) ==> 3*4*5
((((523)))) ==> 523
(1+1) ==> 1+1
1*(2*(3+4)*5)*6 ==> 1*2*(3+4)*5*6
1*(2+3) ==> 1*(2+3)
0*(1+0) ==> 0*(1+0)
(((2+92+82)*46*70*(24*62)+(94+25))+6) ==> (2+92+82)*46*70*24*62+94+25+6
1*(2*(3+4)*5)*6
应该是一个有趣的测试用例(我的解决方案当前无法实现)。
(2+2)*1