Vous obtenez une chaîne composée des caractères 0123456789+*()
. Vous pouvez supposer que la chaîne est toujours une expression mathématique valide.
Votre tâche consiste à supprimer les parenthèses inutiles, en supposant que la multiplication a une priorité plus élevée que l'addition.
Les parenthèses ne doivent être supprimées que lorsqu'elles ne sont pas nécessaires structurellement :
- en raison de la multiplication de priorité plus élevée:
3+(4*5)
=>3+4*5
- en raison de la multiplication ou de l'associativité par addition:
3*(4*5)
=>3*4*5
- lorsqu'ils sont redondants autour d'une expression:
3*((4+5))
=>3*(4+5)
Les parenthèses doivent être conservées lorsqu'elles peuvent être simplifiées en raison de valeurs numériques spécifiques:
1*(2+3)
ne devrait pas être simplifié1*2+3
0*(1+0)
ne devrait pas être simplifié0*1+0
Exemples:
(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
devrait être un testcase intéressant (pour lequel ma solution échoue actuellement).
(2+2)*1