算法分析与设计丨第一周丨LeetCode(2)——Different Ways to Add Parentheses(Medium)

来源:互联网 发布:软件合同登记 编辑:程序博客网 时间:2024/06/06 03:27

点击打开链接

这题目昨天做了今天才有时间写博客。

因为这个星期老师讲了分治法所以我就找了这方面的题目,这道题是要处理所有加括号的情况,看了看众多前辈的提示,我用的与其类似的递归的方法,碰到每个符号时将其分为左右两边来处理,遍历一遍字符串,便可处理完毕。



class Solution {public:    vector<int> diffWaysToCompute(string input) {                vector<int> my_vec;                for(int i = 0;i<input.length();++i)        {            if(input[i] == '+' || input[i] == '-' || input[i] == '*')//碰到符号才处理            {                vector<int> left = diffWaysToCompute(input.substr(0,i));//分成每个部分括号,包括所有括号的情况                vector<int> right = diffWaysToCompute(input.substr(i+1));//左右两边                                                //下面将每个括号部分进行处理                for(int j = 0;j<left.size();++j)                    for(int k =0;k<right.size();++k)                    {                        if(input[i] == '+')                            my_vec.push_back(left[j] + right[k]);                        else if(input[i] == '-')                            my_vec.push_back(left[j] - right[k]);                        else //if(input[i] == '*')                            my_vec.push_back(left[j] * right[k]);                    }                                                                        }                }                    //将字符数字化        if(my_vec.empty())        {            my_vec.push_back(atoi(input.c_str()));        }                return my_vec;    }};


阅读全文
0 0
原创粉丝点击