LeetCode—282. 给表达式添加运算符(困难)

282. 给表达式添加运算符(困难)

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

注意,返回表达式中的操作数 不应该 包含前导零。

考察重点:针对此类返回所有情况的问题,直接使用DFS解决。

    public List<String> addOperators(String num, int target) {List<String> res = new ArrayList<>();if (num == null || num.length() == 0) {return res;}help(num, target, 0, 0, 0, "", res);return res;}private void help(String num, int target, long curRes, long diff, int start, String curExp, List<String> expressions) {if (start == num.length() && (long)target == curRes) {expressions.add(new String(curExp));}for (int i = start; i < num.length(); i++) {String cur = num.substring(start, i + 1);if (cur.length() > 1 && cur.charAt(0) == '0') {     //按照题目要求,得到的操作数不应该包含前导0,即'0'只能以数字0加入表达式break;}if (curExp.length() > 0) {help(num, target, curRes + Long.valueOf(cur), Long.valueOf(cur), i + 1, curExp + "+" + cur, expressions);help(num, target, curRes - Long.valueOf(cur), -Long.valueOf(cur), i + 1, curExp + "-" + cur, expressions);help(num, target, (curRes - diff) + diff * Long.valueOf(cur), diff * Long.valueOf(cur),i + 1, curExp + "*" + cur, expressions);} else {help(num, target, Long.valueOf(cur), Long.valueOf(cur), i + 1, cur, expressions);}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序 生成条形码barcode.js

1、下载barcode.js&#xff0c;新建一个文件wxbarcode.js用于计算条形码的宽高&#xff0c;以自适应不同手机屏显示 var barcode require(./barcode); function convert_length(length) {return Math.round(wx.getSystemInfoSync().windowWidth * length / 750); }function ba…

FormView在什么情况下自动生成模板项?

刚才在鼓捣GridView与FormView&#xff0c;记得前一段时间在做时&#xff0c;点击gridview中的一项会在formview中显示详细的数据&#xff0c;而在 formview中只有编写了ItemTemplate等模板才会显示&#xff0c;我清楚的记得上次我并没有手工去编写itemTemplate模板&#xff0c…

支持向量机的优缺点

原文&#xff1a;http://blog.sina.com.cn/s/blog_6d979ba00100oel2.htmlSVM有如下主要几个特点&#xff1a;(1)非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射&#xff1b;(2)对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方…

udp包大小选折及原因(mtu)

以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.这个1500字节被称为链路层的MTU(最大传输单元).但这并不是指链路层的长度被限制在1500字节,其实这这个MTU指的是链路层的数据区.并不包括链路层的首部和尾部的18个字节.所以,事实上,这个1500字…

Java遍历Map的几种方式

方法一&#xff1a;使用lambda表达式 Map<Integer, Integer> temp new HashMap<>(); temp.put(1,1); temp.put(2,1); temp.put(3,1); temp.forEach((k, v) -> System.out.println(v));其中&#xff0c;k是键&#xff0c;v是值 运行结果&#xff1a; 方法二&…

2019牛客暑期多校训练营(第一场) - B - Integration - 数学

https://ac.nowcoder.com/acm/contest/881/Bhttps://www.cnblogs.com/zaq19970105/p/11210030.html 试图改写多项式&#xff1a; \[\frac{1}{\prod_{i1}^{n}a_i^2x^2}\] 这个多项式用待定系数法设为&#xff1a; \[\frac{1}{\prod_{i1}^{n}a_i^2x^2}\sum_{i1}^{n}\frac{c_i}{a_…

ListBox的一个郁闷小问题!

ListBox的一个郁闷小问题&#xff01;浪费了我一个多小时&#xff01;极度郁闷。。。。。。生成的代码为这样的&#xff1a; <select name"Inc_Client_AccessManage1:ListBox1" size"5" multiple"multiple" id"Inc_Client_AccessManage1…

GNU/CPIO 学习小结

CPIO 是一种binary file archiver&#xff0c; 同时也定义了一种文件格式(file format). CPIO software utility 被作为tape archiver&#xff0c;它最初是作为PWB/UNIX(Programmers Workbech&#xff1a;1976&#xff0c; 在UNIX最开始在Bell Lab出现的时候&#xff0c;UNIX主…

Java使用数组作为Map的key

先说结论&#xff1a;Map使用数组作为key&#xff0c;存放的是其地址 我们用如下代码进行测试&#xff1a; 我们的本意是 将[‘a’,‘b’,‘c’]的字符数组存放入map且对应的value为1查询map中是否包含key为[‘a’,‘b’,‘c’]的键值对将[‘a’,‘b’,‘c’]的字符数组对应的…

[Jobdu] 题目1337:寻找最长合法括号序列

题目描述&#xff1a;给你一个长度为N的&#xff0c;由’(‘和’)’组成的括号序列&#xff0c;你能找出这个序列中最长的合法括号子序列么&#xff1f;合法括号序列的含义便是&#xff0c;在这个序列中&#xff0c;所有的左括号都有唯一的右括号匹配&#xff1b;所有的右括号都…

电脑电视兼容成科技行业新课题

随著深受网民喜爱的网络娱乐节目层出不穷&#xff0c;科技行业一个尚未解决的问题被提上日程&#xff1a;发明让用户得以在电视机上随意收看网络节目的产品。眼下&#xff0c;微软(Microsoft Corp.)、苹果电脑(Apple Computer Inc.)和英特尔(Intel Corp.)等多家行业巨头正在紧锣…

LeetCode—49. 字母异位词分组

49. 字母异位词分组 题目描述&#xff1a; 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的字母得到的一个新单词&#xff0c;所有源单词中的字母通常恰好只用一次。 考察重点&#xff1a;转为…

标准模板库(STL)学习指南之List容器

原文地址&#xff1a;http://dozb.bokee.com/1872684.html [文章导读]STL的目的是标准化组件&#xff0c;这样就不用重新开发&#xff0c;可以使用现成的组件[正文] 什么是STL呢&#xff1f;STL就是Standard Template Library&#xff0c;标准模板库。这可能是一个历史上最令人…

移动web性能优化笔记

移动web性能优化 最近看了一些文章&#xff0c;对移动web性能优化方法&#xff0c;做一个简单笔记 笔记内容主要出自 移动H5前端性能优化指南和移动前端系列——移动页面性能优化 转载于:https://www.cnblogs.com/GongQi/p/4534392.html

mysql04

连接查询 连接方式 1.交叉连接&#xff1a;交叉连接是将两个表不设定任何条件的连接结果。这种方式会产出好多个无效行。所以不用。 2.内连接 语法 select * from tb_name join tb2_name on tb_name.idtb2_name.id(注意 两个id字段的值应该是相等的&#xff09; 3.外连接 左&am…

还是动态生成一个控件

首先&#xff0c;利用System.Type.GetType方法&#xff0c;获得字符串中指定的控件的类型实例。 这里需要注意这个字符串的语法&#xff0c;根据msdn的解释&#xff1a; 按名称和签名隐藏会考虑签名的所有部分&#xff0c;包括自定义修饰符、返回类型、参数类型、标记和非托管调…

面向对象和面向过程的区别

面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象&#xff0c;建立对象的目的不是为了完成一个步骤&#xff0c;而是为了描叙某个事物在整个解…

LeetCode—284. 顶端迭代器

284. 顶端迭代器 题目描述&#xff1a; 请你在设计一个迭代器&#xff0c;在集成现有迭代器拥有的 hasNext 和 next 操作的基础上&#xff0c;还额外支持 peek 操作。 实现 PeekingIterator 类&#xff1a; PeekingIterator(Iterator nums) 使用指定整数迭代器 nums 初始化迭…

sql查询

连接查询&#xff08;多表查询&#xff09; from 表1 [连接方式] join 表2 [on 连接条件]&#xff1b; 交叉连接&#xff1a; select * from 表1 join 表2 交叉查询查出的数据比较混乱 所以用的比较少。 内连接&#xff1a; from 表1 [inner] join 表2 on 表1.字段1…