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