zoukankan      html  css  js  c++  java
  • LC 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 *.

    Example 1:

    Input: "2-1-1"
    Output: [0, 2]
    Explanation: 
    ((2-1)-1) = 0 
    (2-(1-1)) = 2

    Example 2:

    Input: "2*3-4*5"
    Output: [-34, -14, -10, -10, 10]
    Explanation: 
    (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

    Runtime: 4 ms, faster than 77.90% of Java online submissions for Different Ways to Add Parentheses.

    class Solution {
      public List<Integer> diffWaysToCompute(String input) {
        List<Integer> ret = new ArrayList<>();
        for(int i=0; i<input.length(); i++){
          if(input.charAt(i) == '+' ||
              input.charAt(i) == '-' ||
              input.charAt(i) == '*') {
            String part1 = input.substring(0,i);
            String part2 = input.substring(i+1);
            List<Integer> part1ret = diffWaysToCompute(part1);
            List<Integer> part2ret = diffWaysToCompute(part2);
            for(int x : part1ret){
              for(int y : part2ret){
                switch (input.charAt(i)) {
                  case '+' : ret.add(x + y);
                  break;
                  case '-' : ret.add(x - y);
                  break;
                  case '*' : ret.add(x * y);
                  break;
                }
              }
            }
          }
        }
        if(ret.size() == 0) ret.add(Integer.valueOf(input));
        return ret;
      }
    
    }
  • 相关阅读:
    .net 日期格式化
    grunt 上手
    设计模式的认识
    顺时针打印矩阵
    WCF 框架运行时类图
    Python闭包详解
    软件用了那些技术
    zoj 1610 Count the Colors(线段树延迟更新)
    快速提高自己的技术的办法?有两个方法
    纯win32实现PNG图片透明窗体
  • 原文地址:https://www.cnblogs.com/ethanhong/p/10278465.html
Copyright © 2011-2022 走看看