[LeetCode] Expression Add Operators

简介: This post shares a very nice solution, which is rewritten below. 1 class Solution { 2 public: 3 vector addOperators(string num, int target) { 4 int n = num.

This post shares a very nice solution, which is rewritten below.

 1 class Solution {
 2 public:
 3     vector<string> addOperators(string num, int target) {
 4         int n = num.length();
 5         if (!n) return {};
 6         vector<string> ans;
 7         for (int i = 1; i <= n; i++) {
 8             string s = num.substr(0, i);
 9             long v = stol(s);
10             if (s != to_string(v)) continue;
11             add(ans, num, target, s, i, v, v, '$');
12         }
13         return ans;
14     }
15 private:
16     void add(vector<string>& ans, string& num, int target, string s, int i, long v, long pv, char op) {
17         int n = num.length();
18         if (i == n && v == target)
19             ans.push_back(s);
20         else {
21             for (int p = i + 1; p <= n; p++) {
22                 string t = num.substr(i, p - i);
23                 long d = stol(t);
24                 if (t != to_string(d)) continue;
25                 add(ans, num, target, s + '+' + t, p, v + d, d, '+');
26                 add(ans, num, target, s + '-' + t, p, v - d, d, '-');
27                 add(ans, num, target, s + '*' + t, p, (op == '+') ? v - pv + pv * d : ((op == '-') ? v + pv - pv * d: pv * d), pv * d, op);
28             }
29         }
30     }
31 };

 

目录
相关文章
Leetcode 623. Add One Row to Tree
题目很简单,在树的第d层加一层,值为v。递归增加一层就好了。代码如下
55 0
|
存储 C++ Python
LeetCode刷题---Add Two Numbers(一)
LeetCode刷题---Add Two Numbers(一)
|
存储 算法 安全
LeetCode - #2 Add Two Numbers
我们社区从本期开始会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。
LeetCode - #2 Add Two Numbers
LeetCode 415. Add Strings
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
105 0
LeetCode 415. Add Strings
LeetCode 258. Add Digits
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。
78 0
LeetCode 258. Add Digits
LeetCode 241. Different Ways to Add Parentheses
给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。
88 0
LeetCode 241. Different Ways to Add Parentheses
LeetCode 67. Add Binary
给定两个二进制字符串,返回它们的总和(也是二进制字符串)。 输入字符串都是非空的,只包含字符1或0。
86 0
LeetCode 67. Add Binary
|
存储
Leetcode-Medium 2. Add Two Numbers
Leetcode-Medium 2. Add Two Numbers
72 0
|
Python
Leetcode-Easy 989. Add to Array-Form of Integer
Leetcode-Easy 989. Add to Array-Form of Integer
144 0
LeetCode解题之二:Add Two Numbers
LeetCode解题之二:Add Two Numbers