84. Different Ways to Add Parentheses
5925 ワード
道しるべ の数値と演算子を入力し、可能なすべての組合せ結果 を出力します.
かっこをどこに追加するかによって、いろいろな組み合わせができます.すべての組合せを計算します.これは、次の分割によって征服できます.
省略したが,右側はそれぞれ異なる計算結果を返し,最終的には
演算子を基準として、
分割結果を得るためには, のように分割された結果は、最終的には、再帰的な最終結果として数値型のタイプを返す.
図中の最後の計算の前に、
複数型である可能性があるため,単数型値をそれぞれ繰り返し抽出して計算する.
リストコンパイルで処理できますが、可読性を高めるために解凍します.
1.分割征服による複数の組合せ
class Solution:
def diffWaysToCompute(self, expression: str) -> List[int]:
def compute(left, right, op):
results = []
for l in left:
for r in right:
results.append(eval(str(l) + op + str(r)))
return results
if expression.isdigit():
return [int(expression)]
results = []
for index, value in enumerate(expression):
if value in "-+*":
left = self.diffWaysToCompute(expression[:index])
right = self.diffWaysToCompute(expression[index + 1:])
results.extend(compute(left, right, value))
return results
かっこをどこに追加するかによって、いろいろな組み合わせができます.すべての組合せを計算します.これは、次の分割によって征服できます.
*, -, +
演算子が現れると、左右に分割し、それぞれ計算結果を返します.3-4*5
と-17
と-5
の複数の計算結果があり、最終的には2 * [17, -5]
の計算結果[-34, -10]
が返されます.省略したが,右側はそれぞれ異なる計算結果を返し,最終的には
[-34, -14, -10, -10, 10]
という5つの結果を返す.演算子を基準として、
left
、right
を分割し続け、分割後の値はcompute()
関数で計算した結果をextend()
に拡張する.append()
リスト全体を別の要素として処理[1,2,3,[4,5]]
extend()
は、挿入されたオブジェクトのリストを展開し、各エンティティに拡張する.[1,2,3,4,5]
分割結果を得るためには,
expression
がデジタル型の場合に復元する.図中の最後の計算の前に、
right
は[-17, -5]
であった.複数型である可能性があるため,単数型値をそれぞれ繰り返し抽出して計算する.
リストコンパイルで処理できますが、可読性を高めるために解凍します.
eval()
関数は、文字列をグループ化し、Python式で処理します.Reference
この問題について(84. Different Ways to Add Parentheses), 我々は、より多くの情報をここで見つけました https://velog.io/@corone_hi/84.-Different-Ways-to-Add-Parenthesesテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol