Expression Add Operators
https://leetcode.com/problems/expression-add-operators/description/
Thoughts
Code
class Solution {
public:
void dfs(string &s, const int target, const int pos, const long cur, const long last, string path, vector<string> &res) {
if (pos == s.size()) {
if (cur == target) res.push_back(path);
return;
}
for (int i = pos; i < s.size(); ++i) {
if (pos != i && s[pos] == '0') break;
const auto snum = s.substr(pos, i - pos + 1);
const auto num = stol(snum);
if (pos == 0) {
dfs(s, target, i + 1, cur + num, num, snum, res);
continue;
}
dfs(s, target, i + 1, cur + num, num, path + "+" + snum, res);
dfs(s, target, i + 1, cur - num, -num, path + "-" + snum, res);
dfs(s, target, i + 1, cur - last + last * num, last * num, path + "*" + snum, res);
}
}
vector<string> addOperators(string num, int target) {
vector<string> res;
dfs(num, target, 0, 0, 0, "", res);
return res;
}
};
Thoughts
Last updated