zoukankan      html  css  js  c++  java
  • leetcode---different ways to add parentheses

    题意:给定一串包含数字和运算符的字符串,可以在表达式中合理地加上括号,运算符只有:+,-,*。返回所有可能的结果。

    比如:

    输入:“2-1-1”

    可能的情况有:

    1.((2-1)-1) = 0;

    2.(2-(1-1))=2

      仔细观察可以看出,这个问题可以分成子问题的:对于一个运算符,可以在这个符号两边把字符串分成左右两个部分。然后左右两个部分又是一个同样的问题,于是可以使用递归来做。最后要注意终止条件。

      

    vector<int> diffWaysToCompute(string input){
        vector<int> ans;
        for (int i = 0; i < input.length(); ++i){
            char cur = input[i];
            if (cur == '+' || cur == '-' || cur == '*'){
                vector<int> num1 = diffWaysToCompute(input.substr(0, i));
                vector<int> num2 = diffWaysToCompute(input.substr(i + 1));
                for (int j = 0; j < num1.size(); ++j){
                    for (int k = 0; k < num2.size(); ++k){
                        if (cur == '+'){
                            ans.push_back(num1[j] + num2[k]);
                        }
                        else if (cur == '-'){
                            ans.push_back(num1[j] - num2[k]);
                        }
                        else {
                            ans.push_back(num1[j] * num2[k]);
                        }
                    }
                }
            }
        }
        if (ans.empty()){
            ans.push_back(atoi(input.c_str()));
        }
        return ans;
    }

      

  • 相关阅读:
    [TEST123] Performance Test
    [XML123] FpML
    [Java123] Java中的System.exit
    【大秦帝国123】
    1_1:编程概念 + 计算机基础
    响应式布局
    苏宁首页demo
    rem适配方案
    less的使用
    rem布局
  • 原文地址:https://www.cnblogs.com/yplhh/p/4740367.html
Copyright © 2011-2022 走看看