Anda diberi string yang disusun dengan karakter 0123456789+*()
. Anda dapat mengasumsikan bahwa string selalu merupakan ekspresi matematika yang valid.
Tugas Anda adalah menghapus tanda kurung yang tidak perlu, dengan anggapan multiplikasi memiliki prioritas lebih tinggi daripada penambahan.
Tanda kurung harus dihapus hanya ketika mereka tidak diperlukan secara struktural :
- karena penggandaan prioritas lebih tinggi:
3+(4*5)
=>3+4*5
- karena multiplikasi atau penambahan asosiatif:
3*(4*5)
=>3*4*5
- ketika mereka redundan di sekitar ekspresi:
3*((4+5))
=>3*(4+5)
Kurung harus disimpan ketika dapat disederhanakan karena nilai angka tertentu:
1*(2+3)
seharusnya tidak disederhanakan1*2+3
0*(1+0)
seharusnya tidak disederhanakan0*1+0
Contoh:
(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
harus menjadi testcase yang menarik (yang saat ini gagal untuk solusi saya).
(2+2)*1