Bạn được cung cấp một chuỗi bao gồm các ký tự 0123456789+*()
. Bạn có thể giả sử rằng chuỗi luôn là một biểu thức toán học hợp lệ.
Nhiệm vụ của bạn là loại bỏ các dấu ngoặc đơn không cần thiết, giả sử phép nhân có mức độ ưu tiên cao hơn phép cộng.
Các dấu ngoặc chỉ nên được loại bỏ khi chúng không cần thiết về mặt cấu trúc :
- vì nhân lên ưu tiên cao hơn:
3+(4*5)
=>3+4*5
- bởi vì phép nhân hoặc phép cộng:
3*(4*5)
=>3*4*5
- khi chúng dư thừa xung quanh một biểu thức:
3*((4+5))
=>3*(4+5)
Các dấu ngoặc đơn nên được giữ khi chúng có thể được đơn giản hóa vì các giá trị số cụ thể:
1*(2+3)
không nên đơn giản hóa để1*2+3
0*(1+0)
không nên đơn giản hóa để0*1+0
Ví dụ:
(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
nên là một thử nghiệm thú vị (mà giải pháp của tôi hiện không thành công).
(2+2)*1