文字で構成された文字列が与えられます0123456789+*()
。文字列は常に有効な数式であると想定できます。
あなたの仕事は、乗算が加算よりも優先されると仮定して、不要な括弧を削除することです。
構造的に必要でない場合にのみ、括弧を削除する必要があります。
- 乗算の優先度が高いため:
3+(4*5)
=>3+4*5
- 乗算または加算の結合性のため:
3*(4*5)
=>3*4*5
- 式の周りで冗長な場合:
3*((4+5))
=>3*(4+5)
括弧は、特定の数値のために簡略化できる場合は保持する必要があります。
1*(2+3)
に単純化されるべきではない1*2+3
0*(1+0)
に単純化されるべきではない0*1+0
例:
(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
興味深いテストケースである必要があります(私のソリューションでは現在失敗しています)。
(2+2)*1