题目链接
英文链接:https://leetcode.com/problems/different-ways-to-add-parentheses/
中文链接:https://leetcode-cn.com/problems/different-ways-to-add-parentheses/
题目详述
给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +
, -
以及 *
。
示例 1:
1 | 输入: "2-1-1" |
示例 2:
1 | 输入: "2*3-4*5" |
题目详解
分治。
- 以运算符为分隔符,把表达式分为左右两部分,递归进行处理。
- 然后把左右两个子过程的结果组合处理,可以得到所有可能的结果。
- 注意递归终止的条件,表达式只有数字而不含运算符,将表达式直接加入结果链表后返回。
1 | public class LeetCode_00241 { |
上面有很多重复的子过程,可以运用记忆化搜索的方法,设置一个备忘录进行优化。
1 | public class LeetCode_00241 { |