Ti viene data una stringa composta con i caratteri 0123456789+*()
. Puoi presumere che la stringa sia sempre un'espressione matematica valida.
Il tuo compito è rimuovere le parentesi non necessarie, supponendo che la moltiplicazione abbia una priorità maggiore rispetto all'aggiunta.
Le parentesi devono essere rimosse solo quando non sono necessarie strutturalmente :
- a causa della moltiplicazione priorità più alta:
3+(4*5)
=>3+4*5
- a causa della moltiplicazione o dell'associatività dell'addizione:
3*(4*5)
=>3*4*5
- quando sono ridondanti attorno a un'espressione:
3*((4+5))
=>3*(4+5)
Le parentesi dovrebbero essere mantenute quando potrebbero essere semplificate a causa di valori numerici specifici:
1*(2+3)
non dovrebbe essere semplificato a1*2+3
0*(1+0)
non dovrebbe essere semplificato a0*1+0
Esempi:
(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
dovrebbe essere un testcase interessante (per il quale la mia soluzione attualmente non riesce).
(2+2)*1