# 给表达式添加运算符
给定一个仅包含数字 0-9
的字符串 num
和一个目标值整数 target
,在 num
的数字之间添加 二元 运算符(不是一元)+
、-
或 *
,返回所有能够得到目标值的表达式。
示例 1:
输入: num =
"123", target = 6
输出: ["1+2+3", "1*2*3"]
示例 2:
输入: num =
"232", target = 8
输出: ["2*3+2", "2+3*2"]
示例 3:
输入: num =
"105", target = 5
输出: ["1*0+5","10-5"]
示例 4:
输入: num =
"00", target = 0
输出: ["0+0", "0-0", "0*0"]
示例 5:
输入: num =
"3456237490", target = 9191
输出: []
提示:
1 <= num.length <= 10
num
仅含数字
-231 <= target <= 231 - 1
## template
```python
class Solution:
def __init__(self):
self.size = 0
self.num = []
self.now = []
self.sign = []
def addOperators(self, num: str, target: int) -> List[str]:
if not num:
return []
self.size = len(num)
self.num = num
self.now.append(num[0])
self.dfs(0, num[0] == "0")
ans = []
for ss in self.sign:
if eval(ss) == target:
ans.append(ss)
return ans
def dfs(self, i, zero_start):
if i == self.size - 1:
self.sign.append("".join(self.now))
else:
self.now.extend(["+", self.num[i + 1]])
self.dfs(i + 1, self.num[i + 1] == "0")
self.now.pop()
self.now.pop()
self.now.extend(["-", self.num[i + 1]])
self.dfs(i + 1, self.num[i + 1] == "0")
self.now.pop()
self.now.pop()
self.now.extend(["*", self.num[i + 1]])
self.dfs(i + 1, self.num[i + 1] == "0")
self.now.pop()
self.now.pop()
if not zero_start:
self.now.extend([self.num[i + 1]])
self.dfs(i + 1, False)
self.now.pop()
```
## 答案
```python
```
## 选项
### A
```python
```
### B
```python
```
### C
```python
```