zoukankan      html  css  js  c++  java
  • [LeetCode] Different Ways to Add Parentheses

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

    ((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]

    Credits:
    Special thanks to @mithmatt for adding this problem and creating all test cases.

    先想到是就是递归了,下面是AC代码。可能有更好的解法,想到了再回来补充。

     1 class Solution {
     2 public:
     3     int compute(int a, int b, char op) {
     4         switch (op) {
     5             case '+': return a + b;
     6             case '-': return a - b;
     7             case '*': return a * b;
     8         }
     9         return 1;
    10     }
    11     vector<int> diffWaysToCompute(string input) {
    12         int val = 0, idx = 0;
    13         while (idx < input.length() && isdigit(input[idx])) {
    14             val *= 10;
    15             val += input[idx++] - '0';
    16         }
    17         if (idx == input.length()) return {val};
    18         vector<int> res;
    19         vector<int> left, right;
    20         for (int i = 0; i < input.length(); ++i) {
    21             if (!isdigit(input[i])) {
    22                 left = diffWaysToCompute(input.substr(0, i));
    23                 right = diffWaysToCompute(input.substr(i + 1, input.length() -1 - i));
    24                 for (int j = 0; j < left.size(); ++j) {
    25                     for (int k = 0; k < right.size(); ++k) {
    26                         res.push_back(compute(left[j], right[k], input[i]));
    27                     }
    28                 }
    29             }
    30         }
    31         return res;
    32     }
    33 };
  • 相关阅读:
    ip netns
    PPT动手动脑1
    暑假作业日总结
    暑假作业日总结
    课前测试总结
    暑假作业日总结
    大二上每日总结
    暑假作业日总结
    大二上每日总结
    暑假作业日总结
  • 原文地址:https://www.cnblogs.com/easonliu/p/4681493.html
Copyright © 2011-2022 走看看