给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target ,在 num 的数字之间添加 二元 运算符(不是一元)+、- 或 * ,返回所有能够得到目标值的表达式。
示例 1:
输入: num = "123", target = 6
输出: ["1+2+3", "1*2*3"]
方法一:回溯
由题意,每一次对数的操作(截取1~n位)都存在 + - * 三种运算可能,对于 + - 两种操作,我们之间将 计算总值+/-当前截取数值 即可获取新的总值,而对于 * 这一运算,由于其具有的优先级,我们还需维护一个变量储存上一位截取值才能得出乘法下新的总值。
在示例代码中,我们维护一个 List 来便于对储存的字符串进行一系列的回溯操作(类似于一个栈,但比栈要更便捷
private List<String> result;
private char[] nums;
private int target;
public List<String> addOperators(String num, int target) {
this.result = new ArrayList<>(1 << 3);
this.nums = num.t