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

    Well, this problem seems to be a little tricky at first glance. However, the idea (taken from this link) is really simple. Let's take the equation 2*3-4*5 in the problem statement as an example to illustrate the idea. 

    The idea is fairly simple: each time we encounter an operator, split the input string into two parts, one left to the operator and the other right to it. For example, when we reach -, we split the string into 2*3 and 4*5. Then we recursively (yeah, this is the biggest simplification) compute all possible values of the left and right parts and operate on all the possible pairs of them. The idea will become much more obvious if you read the following code.

     1 class Solution {
     2 public:
     3     vector<int> diffWaysToCompute(string input) {
     4         vector<int> outputs;
     5         int n = input.length();
     6         for (int i = 0; i < n; i++) {
     7             if (input[i] == '+' || input[i] == '-' || input[i] == '*') {
     8                 string left = input.substr(0, i);
     9                 string right = input.substr(i + 1, n - i - 1);
    10                 vector<int> lval = diffWaysToCompute(left);
    11                 vector<int> rval = diffWaysToCompute(right);
    12                 for (int l : lval) {
    13                     for (int r : rval) {
    14                         switch (input[i]) {
    15                             case '+':
    16                                 outputs.push_back(l + r);
    17                                 break;
    18                             case '-':
    19                                 outputs.push_back(l - r);
    20                                 break;
    21                             default:
    22                                 outputs.push_back(l * r);
    23                         }
    24                     }
    25                 }
    26             }
    27         }
    28         if (outputs.empty())
    29             outputs.push_back(stoi(input));
    30         return outputs;
    31     }
    32 };
  • 相关阅读:
    每天一个linux命令(22):find 命令的参数详解
    在gitlab中创建项目后如何用git初始上传项目
    TensorBoard可视化
    docker CMD 和 ENTRYPOINT 区别
    django 项目开发及部署遇到的坑
    nginx + uwsgi 部署django项目
    centos7 追加python3 + 使用pip + virtualenv
    docker 常用命令
    Django+celery+rabbitmq实现邮件发送
    web框架链接
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4681579.html
Copyright © 2011-2022 走看看