class Solution {
private:
void addhelper(vector<string> &result,string path,string &num,long target,int pos,long eval,long last)
{
if(pos==num.length())
{
if(eval==target)
result.push_back(path);
//return;
}
else
{
for(int i=pos;i<num.length();i++)
{
if(i!=pos&&num[pos]=='0')//起始位置为0
break;
string temp=num.substr(pos,i-pos+1);
long cur=stol(temp);
if(pos==0)
{
addhelper(result,path+temp,num,target,i+1,eval+cur,cur);
}
else
{
addhelper(result,path+'+'+temp,num,target,i+1,eval+cur,cur);
addhelper(result,path+'-'+temp,num,target,i+1,eval-cur,-cur);
addhelper(result,path+'*'+temp,num,target,i+1,eval-last+last*cur,last*cur);
}
}
}
}
public:
vector<string> addOperators(string num, int target) {
vector<string> result;
string path="";
if(num.length()==0)
return result;
addhelper(result,path,num,target,0,0,0);
return result;
}
};
282. Expression Add Operators
最新推荐文章于 2020-03-09 23:19:16 发布