• 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;
    }

      

  • 相关阅读:
    putty设置用key自动登录
    linux快速进入全屏命令行模式
    二维数组的指针
    vim编写Bash脚本
    使用cat命令添加或附加多行文本
    Linode中的Network Helper
    网络通信框架之retrofit
    网络通信框架之okHttp
    网络通信框架之okHttpUtils
    Volley源码分析
  • 原文地址:https://www.cnblogs.com/yplhh/p/4740367.html
Copyright © 2020-2023  润新知