zoukankan      html  css  js  c++  java
  • 241. Different Ways to Add Parentheses

    一、题目

      1、审题

      

      2、分析

        给出一个运算式的字符串,求加上括号后的所有可能结果。

    二、解答

      1、思路

        采用递归方式。

        碰到操作符后就将运算式分为前后两部分,递归调用此方法算出前后两部分的所有运算结果。在根据此操作符将前后两部分的结果进行操作。最终将结果存于 List中进行返回。

        可以通过一个 Map 存储 输入字符串对应的运算结果,减少递归的次数。

      

     1   HashMap<String, List<Integer>> map = new HashMap<>();
     2     public List<Integer> diffWaysToCompute(String input) {
     3         if(map.containsKey(input))
     4             return map.get(input);
     5         
     6         List<Integer> ret = new LinkedList<Integer>();
     7         for (int i = 0; i < input.length(); i++) {
     8             char ch = input.charAt(i);
     9             if(ch == '-' || ch == '+' || ch == '*') {
    10                 String part1 = input.substring(0, i);
    11                 String part2 = input.substring(i + 1);
    12                 List<Integer> part1Ret = diffWaysToCompute(part1);
    13                 List<Integer> part2Ret = diffWaysToCompute(part2);
    14                 
    15                 for(Integer p1: part1Ret) {
    16                     for(Integer p2: part2Ret) {
    17                         int c = 0;
    18                         switch (ch) {
    19                             case '+': c = p1 + p2;
    20                                 break;
    21                             case '-': c = p1 - p2;
    22                                 break;
    23                             case '*': c = p1 * p2;
    24                                 break;
    25                         }
    26                         ret.add(c);
    27                     }
    28                 }
    29             }
    30         }
    31         if(ret.size() == 0)
    32             ret.add(Integer.valueOf(input));
    33         map.put(input, ret);
    34         return ret;
    35     }
  • 相关阅读:
    小小杨的影视空间
    关于励志的事情
    关于2020年的总结
    关于心情不好的时候
    关于我的2020年
    单链表基本操作的实现
    原型模式
    android—安卓系统文件目录结构
    android——apk安装文件的组成结构
    android——项目的组成结构
  • 原文地址:https://www.cnblogs.com/skillking/p/9988935.html
Copyright © 2011-2022 走看看