class Solution {
public:
vector<string> addOperators(string num, int target) {
vector<string> res;
help(num,target,0,0,"",res);
return res;
}
void help(string num, int target, long long lastNum, long long curNum, string tmpRes, vector<string>& res){
if(num.size()==0 && curNum==target){
res.push_back(tmpRes);
return;
}
for(int i=1;i<=num.size();++i){
string cur = num.substr(0,i);
if(cur.size()>1 && cur[0]=='0')
return;
string next = num.substr(i);
if(tmpRes.size()>0){
help(next,target,stoll(cur),curNum+stoll(cur),tmpRes+"+"+cur,res);
help(next,target,-stoll(cur),curNum-stoll(cur),tmpRes+"-"+cur,res);
help(next,target,lastNum*stoll(cur),(curNum-lastNum)+lastNum*stoll(cur),tmpRes+"*"+cur,res);
}else
help(next,target,stoll(cur),stoll(cur),cur,res);
}
}
};
282. 给表达式添加运算符/C++(超时)
最新推荐文章于 2024-04-01 11:42:27 发布