【
给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。
示例 1:
输入: "2-1-1"
输出: [0, 2]
解释:
((2-1)-1) = 0
(2-(1-1)) = 2
示例 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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/different-ways-to-add-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
】
分治算法,总算遇到了,绕不过。
此题思路:
1.找到字符串中的运算符,将字符串S分割成left和right;
2.递归求解left和right的所有可能结果,遍历求得left和right的所有结果根据运算符计算后的结果;
3.递归终止条件:字符串中已经没有运算符,将字符串转换成数字输出;
分治的思想还是递归处理,但与二叉树和dfs又有些不同,分治需要合并这一步操作。
导致每次递归下来&#x