leetcode 日经贴,python code -Different Ways to Add Parentheses

来源:互联网 发布:魔兽之路隐藏英雄数据 编辑:程序博客网 时间:2024/05/22 16:56

Different Ways to Add Parentheses

class Solution {public:    char gettoken(const string& s, int& pos, int& num) {        int n = s.length();        while (pos < n && s[pos] == ' ') {            ++pos;        }        if (pos == n) {            return '\0';        }        if (s[pos] >= '0' && s[pos] <= '9') {            num = 0;            while (pos < n && s[pos] >= '0' && s[pos] <= '9') {                num = num * 10 + int(s[pos++] - '0');            }            return 'd';        }        return s[pos++];    }        vector<int> diffWaysToCompute(string input) {        vector<int> nums;        vector<char> ops;        int pos = 0, num = 0;        char op;        while (op = gettoken(input, pos, num)) {            if (op == 'd') {                nums.push_back(num);            } else {                ops.push_back(op);            }        }        int n = nums.size();        vector<vector<vector<int> > > vst(n);        for (int i = 0; i < n; ++i) {            vst[i].resize(n);            vst[i][i].push_back(nums[i]);        }        for (int len = 2; len <= n; ++len) {            for (int i = 0; i + len <= n; ++i) {                int j = i + len - 1;                for (int k = i; k < j; ++k) {                    for (vector<int>::iterator itr1 = vst[i][k].begin(); itr1 != vst[i][k].end(); ++itr1) {                        for (vector<int>::iterator itr2 = vst[k + 1][j].begin(); itr2 != vst[k+1][j].end(); ++itr2) {                            int val = 0;                            switch (ops[k]) {                                case '+': val = *itr1 + *itr2; break;                                case '-': val = *itr1 - *itr2; break;                                case '*': val = *itr1 * *itr2; break;                            }                            vst[i][j].push_back(val);                        }                    }                }            }        }        return vst[0][n-1];    }};


0 0
原创粉丝点击