-
Notifications
You must be signed in to change notification settings - Fork 0
/
expressionAddOper.cpp
44 lines (41 loc) · 1.52 KB
/
expressionAddOper.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/*
Given a string that contains only digits 0-9 and a target value, return all possibilities to add binary operators (not unary) +, -, or * between the digits so they evaluate to the target value.
Examples:
"123", 6 -> ["1+2+3", "1*2*3"]
"232", 8 -> ["2*3+2", "2+3*2"]
"105", 5 -> ["1*0+5","10-5"]
"00", 0 -> ["0+0", "0-0", "0*0"]
"3456237490", 9191 -> []
*/
class Solution {
public:
void dfs(vector<string> &result, const string &num, const int target, string cur, int pos, const long cv, const long pv, const char op){
if(pos == num.size() && cv == target)
result.push_back(cur);
else {
for(int i = pos+1; i <= num.size(); i++) {
string temp = num.substr(pos, i-pos);
long now = stol(temp);
if(to_string(now).size() != temp.size())
continue;