Sie erhalten eine Zeichenfolge, die aus den Zeichen besteht 0123456789+*()
. Sie können davon ausgehen, dass die Zeichenfolge immer ein gültiger mathematischer Ausdruck ist.
Ihre Aufgabe ist es, die unnötigen Klammern zu entfernen, vorausgesetzt, die Multiplikation hat eine höhere Priorität als die Addition.
Die Klammern sollten nur entfernt werden, wenn sie strukturell nicht benötigt werden :
- wegen multiplikation höhere priorität:
3+(4*5)
=>3+4*5
- wegen Multiplikation oder Addition Assoziativität:
3*(4*5)
=>3*4*5
- Wenn sie um einen Ausdruck herum redundant sind:
3*((4+5))
=>3*(4+5)
Klammern sollten beibehalten werden, wenn sie aufgrund bestimmter Zahlenwerte vereinfacht werden könnten:
1*(2+3)
sollte nicht vereinfacht werden1*2+3
0*(1+0)
sollte nicht vereinfacht werden0*1+0
Beispiele:
(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
sollte ein interessanter Testfall sein (für den meine Lösung derzeit ausfällt).
(2+2)*1