您的位置:首页 > 运维架构

[LeetCode] Expression Add Operators

2015-09-16 21:58 295 查看
This post shares a very nice solution, which is rewritten below.

class Solution {
public:
vector<string> addOperators(string num, int target) {
int n = num.length();
if (!n) return {};
vector<string> ans;
for (int i = 1; i <= n; i++) {
string s = num.substr(0, i);
long v = stol(s);
if (s != to_string(v)) continue;
add(ans, num, target, s, i, v, v, '$');
}
return ans;
}
private:
void add(vector<string>& ans, string& num, int target, string s, int i, long v, long pv, char op) {
int n = num.length();
if (i == n && v == target)
ans.push_back(s);
else {
for (int p = i + 1; p <= n; p++) {
string t = num.substr(i, p - i);
long d = stol(t);
if (t != to_string(d)) continue;
add(ans, num, target, s + '+' + t, p, v + d, d, '+');
add(ans, num, target, s + '-' + t, p, v - d, d, '-');
add(ans, num, target, s + '*' + t, p, (op == '+') ? v - pv + pv * d : ((op == '-') ? v + pv - pv * d: pv * d), pv * d, op);
}
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: