zoukankan      html  css  js  c++  java
  • Different Ways to Add Parentheses——Leetcode

    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 *.


    Example 1

    Input: "2-1-1".

    ((2-1)-1) = 0
    (2-(1-1)) = 2

    Output: [0, 2]


    Example 2

    Input: "2*3-4*5"

    (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

    Output: [-34, -14, -10, -10, 10]

    题目大意:给定一个表达式,让你随便在上面加括号,然后算所有可能的结果。

    解题思路:

    这题如果顺着题目的意思,自己去加括号然后算表达式的值那就完了,掉坑里出不来了,其实就是分治,举个例子:

    对表达式,找到一个运算符,然后计算式子两边的所有可能的值,然后把两边分别乘起来就可以了,递归的计算两边的值。

    题目的要求就是计算所有的。

    public static List<Integer> diffWaysToCompute(String input) {
            List<Integer> res = new ArrayList<>();
            if(input==null||input.length()==0){
                return res;
            }
            for(int i=0;i<input.length();i++){
                char c = input.charAt(i);
                if(!Character.isDigit(c)){
                    List<Integer> pre  = diffWaysToCompute(input.substring(0,i));
                    List<Integer> post = diffWaysToCompute(input.substring(i+1,input.length()));
                    for(int f : pre){
                        for(int l : post){
                            if(c=='+'){
                                res.add(f+l);
                            }else if(c=='-'){
                                res.add(f-l);
                            }else if(c=='*'){
                                res.add(f*l);
                            }
                        }
                    }
                }
            }
            if(res.size()==0){
                res.add(Integer.valueOf(input));
            }
            Collections.sort(res);
            return res;
        }
  • 相关阅读:
    ‘Host’ is not allowed to connect to this mysql server
    centos7安装mysql
    further configuration avilable 不见了
    Dynamic Web Module 3.0 requires Java 1.6 or newer
    hadoop启动 datanode的live node为0
    ssh远程访问失败 Centos7
    Linux 下的各种环境安装
    Centos7 安装 python2.7
    安装scala
    Centos7 安装 jdk 1.8
  • 原文地址:https://www.cnblogs.com/aboutblank/p/4824232.html
Copyright © 2011-2022 走看看