LeetCode 241.给表达式加括号 发表于 2017-07-26 | 分类于 学习笔记 | 241.给表达式加括号 Different Ways to Add Parentheses (Medium) Leetcode / 力扣 题目描述123456Input: "2-1-1".((2-1)-1) = 0(2-(1-1)) = 2Output : [0, 2] 解题思路123456789101112131415161718192021222324252627282930313233343536class Solution { public List<Integer> diffWaysToCompute(String input) { List<Integer> ways = new ArrayList<>(); /* 递归:以某个字符作为分隔符断开字符串,递归遍历左右两边 做法类似构造二叉树,也是分割开来左右遍历,然后合并 */ for(int i = 0; i < input.length(); i++){ char c = input.charAt(i); if(c == '+' || c == '-' || c == '*'){ List<Integer> left = diffWaysToCompute(input.substring(0, i)); List<Integer> right = diffWaysToCompute(input.substring(i + 1)); for (int l : left) { for (int r : right) { switch (c) { case '+': ways.add(l + r); break; case '-': ways.add(l - r); break; case '*': ways.add(l * r); break; } } } } } //纯数字 if (ways.size() == 0) { ways.add(Integer.valueOf(input)); } return ways; }} 本文作者: bwael 本文链接: http://bwael.com/2017/07/26/leetcode-241/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!