Te dan una cadena compuesta con los caracteres 0123456789+*()
. Puede suponer que la cadena siempre es una expresión matemática válida.
Su tarea es eliminar los paréntesis innecesarios, suponiendo que la multiplicación tenga mayor prioridad que la suma.
Los paréntesis deben eliminarse solo cuando no son necesarios estructuralmente :
- debido a la multiplicación mayor prioridad:
3+(4*5)
=>3+4*5
- debido a la asociatividad de multiplicación o suma:
3*(4*5)
=>3*4*5
- cuando son redundantes alrededor de una expresión:
3*((4+5))
=>3*(4+5)
Los paréntesis deben mantenerse cuando puedan simplificarse debido a valores numéricos específicos:
1*(2+3)
no debe simplificarse a1*2+3
0*(1+0)
no debe simplificarse a0*1+0
Ejemplos:
(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
debería ser un caso de prueba interesante (por el cual mi solución falla actualmente).
(2+2)*1