-
题目链接 https://leetcode-cn.com/problems/different-ways-to-add-parentheses/comments/
-
题目描述
- 给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含
+
,-
以及*
。 -
输入:
"2-1-1"
输出:[0, 2]
解释: ((2-1)-1) = 0 (2-(1-1)) = 2 -
输入:
"2*3-4*5"
输出:[-34, -14, -10, -10, 10]
解释: (2*(3-(4*5))) = -34 ((2*3)-(4*5)) = -14 ((2*(3-4))*5) = -10 (2*((3-4)*5)) = -10 (((2*3)-4)*5) = 10
- 给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含
-
解题思路
- 分治法:题目要求不同括号组合下表达式的值。将一个表达式根据其操作符可以化成子表达式,这样就可以将问题划分成求左边/右边表达式在不同括号组合下的值。其中有几个操作符就可以进行几次划分
-
代码
- python
class Solution: def diffWaysToCompute(self, input): res = [] for i in range(1, len(input)): if not input[i].isdigit(): left = self.diffWaysToCompute(input[:i]) right = self.diffWaysToCompute(input[i+1:]) for l in left: for r in right: res.append(eval(str(l) + input[i] + str(r))) if not res: res = [int(input)] return res
- python
leetcode 241. 为运算表达式设计优先级
最新推荐文章于 2023-05-09 21:37:32 发布