zoukankan      html  css  js  c++  java
  • 给一个表达式字符串加括号,计算它的所有的可能的值

    241. Different Ways to Add Parentheses

    题意:Given a string of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. The valid operators are +- and *.

    解法:利用分治发求解。和矩阵加括号类似。

    代码如下

     1     public List<Integer> diffWaysToCompute(String input) {
     2         //int i = 0;
     3         List<Integer> res = helper(input);
     4 
     5         return res;
     6     }
     7 
     8     public List<Integer> helper(String input) {
     9         List<Integer> res = new ArrayList<>();
    10         int i = 0;
    11         int n = input.length();
    12         while (i < n) {
    13             //int j=i;
    14             while (i < n && Character.isDigit(input.charAt(i))) i++;
    15             if(i==n) break;
    16             String s1 = input.substring(0, i);
    17             String s2 = input.substring(i + 1);
    18             char operator = input.charAt(i);
    19             List<Integer> list1 = helper(s1);
    20             List<Integer> list2 = helper(s2);
    21             if (operator == '+') {
    22                 for (int i1 : list1) {
    23                     for (int i2 : list2) {
    24                         res.add(i1 + i2);
    25                     }
    26                 }
    27             } else if (operator == '-') {
    28                 for (int i1 : list1) {
    29                     for (int i2 : list2) {
    30                         res.add(i1 - i2);
    31                     }
    32                 }
    33             } else {
    34                 for (int i1 : list1) {
    35                     for (int i2 : list2) {
    36                         res.add(i1 * i2);
    37                     }
    38                 }
    39             }
    40             i++;
    41         }
    42         if(res.isEmpty()) res.add(Integer.parseInt(input));
    43         return res;
    44     }
  • 相关阅读:
    元组
    字典
    列表
    数据类型-字符串(str)
    python安装和首次使用
    javac++的stl解决重复的元素
    c++二分法求一个数的完全平方数
    双指针法----->求数组中两数之和
    java的二分法求一个数的平方根
    Java递归加上二分搜索将有序数组转化为平衡二叉树2
  • 原文地址:https://www.cnblogs.com/shizhh/p/5695149.html
Copyright © 2011-2022 走看看