[征服分割]Let code 241Different Ways to Add Parentheses
6111 ワード
道路標識241号
すべての計算結果をかっこで出力
復帰する
例:「3+2*1-5+4」式が与えられている場合、演算子による前後のグループ化->数値は2桁であってもよいため、数値は常に偶数インデックスではない(divide)
最初は(3)+(2*1-5+4)
(3)同じような場合に分けられないので表現する.isdigit()はフィルタリングされ[3]自体に戻る.
(2*1-5+4)この部分は中括弧の大きさによって、いろいろな演算結果が出る可能性があります.
Aが「(A)演算子(B)」に分割された場合、Aが持つ計算結果はリストの左側に、Bが持つ計算結果はリストの右側に、2つのforゲートを回してこの組合せに戻るのが原理です.
したがって、diffWaysToComputeは、各式が持つ可能性のある計算結果の答えを返すだけです.
文字列式の計算文字列を計算する式「3+4」にはいくつかの方法がありますが、evalを使用すると以下のように簡単に処理できます.戻りタイプはintです.
次のコードは、与えられた式で発生する可能性のあるすべての結果を求めるために作成されたfor文のコードです.
非appendは、可能なすべての組合せ(リスト)の総和であるため、appendとして処理すると、リスト自体がリストに入る.したがって、リスト内の要素をマージするときにextendまたは+演算を使用できます.
すべての計算結果をかっこで出力
復帰する
class Solution:
def calculate(self,left,right,opt):
result = []
for l in left:
for r in right:
result.append(eval(str(l) + opt + str(r)))
return result
def diffWaysToCompute(self, expression: str):
answer = []
if expression.isdigit():
return [expression]
for i in range(len(expression)):
if expression[i] in "+-*":
left = self.diffWaysToCompute(expression[:i])
right = self.diffWaysToCompute(expression[i+1:])
answer.extend(self.calculate(left,right,expression[i]))
return answer
例:「3+2*1-5+4」式が与えられている場合、演算子による前後のグループ化->数値は2桁であってもよいため、数値は常に偶数インデックスではない(divide)
最初は(3)+(2*1-5+4)
(3)同じような場合に分けられないので表現する.isdigit()はフィルタリングされ[3]自体に戻る.
(2*1-5+4)この部分は中括弧の大きさによって、いろいろな演算結果が出る可能性があります.
Aが「(A)演算子(B)」に分割された場合、Aが持つ計算結果はリストの左側に、Bが持つ計算結果はリストの右側に、2つのforゲートを回してこの組合せに戻るのが原理です.
したがって、diffWaysToComputeは、各式が持つ可能性のある計算結果の答えを返すだけです.
result = eval("3+4")
print(result) # 7
集計リスト次のコードは、与えられた式で発生する可能性のあるすべての結果を求めるために作成されたfor文のコードです.
非appendは、可能なすべての組合せ(リスト)の総和であるため、appendとして処理すると、リスト自体がリストに入る.したがって、リスト内の要素をマージするときにextendまたは+演算を使用できます.
answer.extend(self.calculate(left,right,expression[i]))
Reference
この問題について([征服分割]Let code 241Different Ways to Add Parentheses), 我々は、より多くの情報をここで見つけました https://velog.io/@rmswjdtn/분할정복-Leet-code-241.-Different-Ways-to-Add-Parenthesesテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol