241 為運算表示式設計優先順序

2021-10-07 21:22:16 字數 1256 閱讀 2666

給定乙個含有數字和運算子的字串,為表示式新增括號,改變其運算優先順序以求出不同的結果。你需要給出所有可能的組合的結果。有效的運算符號包含 +, - 以及 * 。

示例 1:

輸入: 「2-1-1」

輸出: [0, 2]

解釋:((2-1)-1) = 0

(2-(1-1)) = 2

示例 2:

輸入: 「23-45」

輸出: [-34, -14, -10, -10, 10]

解釋:(2*(3-(45))) = -34

((23)-(45)) = -14

((2(3-4))5) = -10

(2((3-4)5)) = -10

(((23)-4)*5) = 10

這個題其實是個老題了,但最開始沒想出來怎麼寫,而且python語法不太熟,最近又要用python,所以?一下

class

solution

:def

diffwaystocompute

(self,

input

:str)-

> list[

int]

:# 如果只有數字,直接返回

ifinput

.isdigit():

return

[int

(input)]

res =

for i, char in

enumerate

(input):

if char in

['+'

,'-'

,'*']:

# 1.分解:遇到運算子,計算左右兩側的結果集

# 2.解決:diffwaystocompute 遞迴函式求出子問題的解

left = self.diffwaystocompute(

input

[:i]

) right = self.diffwaystocompute(

input

[i+1:]

)# 3.合併:根據運算子合併子問題的解

for l in left:

for r in right:

if char ==

'+':

elif char ==

'-':

else

:return res

/solution/pythongolang-fen-zhi-suan-fa-by-jalan/

241 為運算表示式設計優先順序

思路 分治法 不同位置新增括號的作用在於改變不同運算子的優先順序。所以,可以在遍歷的過程中依次把運算子設為第一優先順序,遞迴計算左邊和右邊。class solution def diffwaystocompute self,input str list int if input isdigit 全數...

241 為運算表示式設計優先順序

題目描述 給定乙個含有數字和運算子的字串,為表示式新增括號,改變其運算優先順序以求出不同的結果。你需要給出所有可能的組合的結果。有效的運算符號包含 以及 解題思路一 對於每乙個運算符號,先執行兩邊的表示式,然後再處理當前這個符號,採用分治的思想,如下 class solution def diffw...

241 為運算表示式設計優先順序(分治)

給定乙個含有數字和運算子的字串,為表示式新增括號,改變其運算優先順序以求出不同的結果。你需要給出所有可能的組合的結果。有效的運算符號包含 以及 看到題就覺得有點複雜,可以考慮一下遞迴的方式,去尋找子問題和原問題解的關係。可以通過運算子把整個式子分成兩部分,兩部分再利用遞迴解決。以 2 3 4 5 為...