暴搜应该是可以的----那么我们对暴搜优化吧----这怎么优化啊----看答案,卧槽直接暴搜这都可以(摔~)
最讨厌这种字符串处理的问题,得一个一个字符的研究,麻烦
class Solution {
public:
vector<string> addOperators(string num, int target) {
vector<string> result;
if (num.size() == 0) return result;
help(result, "", num, target, 0, 0, 0);
return result;
}
void help(vector<string> &result, string path, string num, int target, int pos, long cur, long prev) {
if (pos == num.size()) {
if (cur == target) result.push_back(path);
return;
}
for (int i = pos; i<num.size(); i++) {
/*** corner-case-added-code ***/
if (num[pos] == '0' && i>pos) break;
string _str = num.substr(pos, i - pos + 1);
long _value = stol(_str);
if (pos == 0) {
help(result, path + _str, num, target, i + 1, _value, _value);
}
else {
help(result, path + "+" + _str, num, target, i + 1, cur + _value, _value);
help(result, path + "-" + _str, num, target, i + 1, cur - _value, -_value);
help(result, path + "*" + _str, num, target, i + 1, cur - prev + prev*_value, prev*_value);
}
}
}
};