给定一个仅包含数字 0-9 的字符串和一个目标值,在数字之间添加二元运算符(不是一元)+- 或 * ,返回所有能够得到目标值的表达式。

示例 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
输出: []

class Solution {
public:
    vector<string> addOperators(string num, int target) 
    {
        vector<string> res;
        addOperatorsDFS(num, target, 0, 0, "", res);
        return res;
    }
    void addOperatorsDFS(string num, int target, long long diff, long long curNum, string out, vector<string> &res)
    {
        if (num.size() == 0 && curNum == target) {
            res.push_back(out);
        }
        for (int i = 1; i <= num.size(); ++i) {
            string cur = num.substr(0, i);
            if (cur.size() > 1 && cur[0] == '0') return;
            string next = num.substr(i);
            if (out.size() > 0) {
                addOperatorsDFS(next, target, stoll(cur), curNum + stoll(cur), out + "+" + cur, res);
                addOperatorsDFS(next, target, -stoll(cur), curNum - stoll(cur), out + "-" + cur, res);
                addOperatorsDFS(next, target, diff * stoll(cur), (curNum - diff) + diff * stoll(cur), out + "*" + cur, res);
            } else {
                addOperatorsDFS(next, target, stoll(cur), stoll(cur), cur, res);
            }
        }
    }
};

282.给表达式添加运算符相关推荐

  1. 282. 给表达式添加运算符

    282. 给表达式添加运算符 给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target ,在 num 的数字之间添加 二元 运算符(不是一元)+.- 或 * ,返回所有能够得到目标 ...

  2. leetcode 282. Expression Add Operators | 282. 给表达式添加运算符(中缀表达式求值)

    题目 https://leetcode.com/problems/expression-add-operators/description/ 题解 中缀表达式求值问题,参考:leetcode 227. ...

  3. python的表达式3or5_Python 简明教程 --- 5,Python 表达式与运算符

    靠代码行数来衡量开发进度,就像是凭重量来衡量飞机制造的进度. -- Bill Gates 目录 1,什么是表达式 表达式是代码的重要组成部分,一个表达式由运算符和操作数两部分组成. 一个表达式就描述了 ...

  4. python逻辑表达式3+45and_Python 简明教程 --- 5,Python 表达式与运算符

    靠代码行数来衡量开发进度,就像是凭重量来衡量飞机制造的进度. -- Bill Gates 目录 1,什么是表达式 表达式是代码的重要组成部分,一个表达式由运算符和操作数两部分组成. 一个表达式就描述了 ...

  5. java 运算符_详解Java表达式与运算符

    课程导言 [变量的赋值与计算都离不开表达式,表达式的运算依赖于变量.常量和运算符.本节课讨论Java的表达式的构成.常量的定义.运算符的分类及应用.通过本课的学习你将掌握运用表达式和运算符完成变量赋值 ...

  6. (15)Verilog表达式与运算符-基本语法(三)(第3天)

    (15)Verilog表达式与运算符-基本语法(三)(第3天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)Verilog表达式与运算符-基本语法(三)(第3天 ...

  7. java加法运算表达式_java运算符和表达式

    1. 算术运算符与算术表达式(1) 加减运算符 +,-.例如 2+39,908.98-23等. 加减运算符是双目运算符,即连接两个操作元的运算符.加减运算符的结合方向是从左到右.例如: 2+3-8,先 ...

  8. C# 表达式与运算符

    C# 表达式与运算符 1.表达式 表达式由运算符和操作符组成的,运算符设置将对操作数进行什么样的运算符,而操作数包括文本,常量,变量和表达式等. 1.算术运算符 +:加号. -:减号. *:乘号. / ...

  9. c语言笔记-----运算符和表达式(算术,自增自减,关系,赋值,逻辑运算符及其表达式,运算符和优先级总结)

    运算符 一.运算符和表达式的相关概念以及分类: **1.运算符的概念:**运算符就是一些特定的符号,用来表示针对数据的特定操作,也称之为操作符. 2.运算符的分类:分类方法不同,结果不同. **1)* ...

  10. C语言为运算表达式添加括号,读书笔记-c语言-运算符与表达式

    1.算术运算符:+-*/% %要求参与运算的两个量必须是整型或字符型的,实型(float,double等)的数据不能做%运算. 算术表达式 运算符和数据可以组成运算的式子,称为表达式.举例:10+20 ...

最新文章

  1. 第一次使用MsChart运行提示:ChartImg.axd 执行子请求时出错。
  2. 在Homebrew 发布程序
  3. 程序员选择字体的标准是
  4. 编程问题难解决,学会提问是关键!
  5. oracle數據庫any,Oracle权限集合全集
  6. android:versionCode和android:versionName 用途
  7. AT3557 Four Coloring 切比雪夫距离 + 四色构造
  8. studio 快捷键
  9. 如何使用移动硬盘加密
  10. ThinkCMF变量输出+使用函数
  11. mysql双机热备的配置步骤
  12. SylixOS 内存管理源代码分析--pageLib.c
  13. 尚硅谷大数据之Linux
  14. 解决AxureRP经常性损坏问题
  15. 云服务器 ECS Linux 配置 vsftpd即FTP的搭建和使用
  16. box-sizing:boder-box
  17. 十月美剧精听总结 - 权力的游戏「Game of Throne」 黑袍纠察队「The boys」 老无所依「No Country for the old men」
  18. Python爬虫入门4:使用IE浏览器获取网站访问的http信息
  19. 计算机与模拟实验的论文,作业模拟论文,关于森林作业的计算机模拟相关参考文献资料-免费论文范文...
  20. 10款最著名的代码(文本)编辑器

热门文章

  1. 基于Vue、vue-i18n实现国际化(多语言)
  2. ZTree async中文乱码,ZTree reAsyncChildNodes中文乱码,zTree中文乱码
  3. phpstrom 设置svn提交的代码同步到服务器
  4. react-native 解决“Could not get BatchedBridge...” 的问题
  5. spark 查看 job history 日志
  6. We7CMS内容管理系统助阵政府完善信息公开制度
  7. java.util.concurrent.locks.LockSupport
  8. Js获取处理日期时间
  9. IIS添加对ashx文件的支持
  10. Servlet技术详解