282. 给表达式添加运算符

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

示例 1:

输入: num = “123”, target = 6

输出: [“1+2+3”, “123”]

示例 2:

输入: num = “232”, target = 8

输出: [“23+2", "2+32”]

示例 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. class Solution {
  2. char[] num;
  3. char[] exp;
  4. int target;
  5. List<String> res;
  6. public List<String> addOperators(String num, int target) {
  7. this.res = new ArrayList<>();
  8. this.num = num.toCharArray();
  9. this.target = target;
  10. this.exp = new char[num.length()*2];
  11. dfs(0,0,0,0);
  12. return res;
  13. }
  14. private void dfs(int pos,int len,long prev,long curr) {
  15. if(pos == num.length) {
  16. if(curr==target) {
  17. res.add(new String(exp,0,len));
  18. }
  19. return;
  20. }
  21. /**
  22. * s 记录该次 dfs的起始位置
  23. * pos是num的位置
  24. */
  25. int s = pos;
  26. /**
  27. * len是 放数字 的位置
  28. * l是 放运算符 的位置
  29. */
  30. int l = len;
  31. if(s!=0) {
  32. len++;
  33. }
  34. long n = 0;
  35. while (pos < num.length){
  36. if(num[s] =='0' && pos-s>0) {
  37. break;
  38. }
  39. n = n*10+(int)(num[pos] -'0');
  40. if(n > Integer.MAX_VALUE){
  41. break;
  42. }
  43. exp[len++] = num[pos++];
  44. if(s==0) {
  45. dfs(pos,len,n,n);
  46. continue;
  47. }
  48. exp[l] = '+';
  49. dfs(pos,len,n,curr+n);
  50. exp[l] = '-';
  51. dfs(pos,len,-n,curr-n);
  52. exp[l] = '*';
  53. dfs(pos,len,prev*n,curr-prev+prev*n);
  54. }
  55. }
  56. }

Java实现 LeetCode 282 给表达式添加运算符的更多相关文章

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

    给定一个仅包含0-9的字符串和一个目标值,返回在数字之间添加了二元运算符(不是一元的) +.-或*之后所有能得到目标值的情况. 例如: "123", 6 -> [" ...

  2. 282 Expression Add Operators 给表达式添加运算符

    给定一个仅包含0-9的字符串和一个目标值,返回在数字之间添加了二元运算符(不是一元的) +.-或*之后所有能得到目标值的情况.例如:"123", 6 -> ["1+ ...

  3. [leetcode]282. Expression Add Operators 表达式添加运算符

    Given a string that contains only digits 0-9 and a target value, return all possibilities to add bin ...

  4. [Swift]LeetCode282. 给表达式添加运算符 | Expression Add Operators

    Given a string that contains only digits 0-9 and a target value, return all possibilities to add bin ...

  5. Java实现 LeetCode 241 为运算表达式设计优先级

    241. 为运算表达式设计优先级 给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果.你需要给出所有可能的组合的结果.有效的运算符号包含 +, - 以及 * . 示例 ...

  6. JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)

    1.JSP常用标签 * 只要支持JSP文件,常用标签有可以直接使用 * 格式: jsp:xxxx * jsp:forward ,完成jsp页面的转发 * page属性:转发的地址 <% requ ...

  7. Java 终于有 Lambda 表达式啦~Java 8 语言变化——Lambda 表达式和接口类更改【转载】

    原文地址 en cn 下载 Demo Java™ 8 包含一些重要的新的语言功能,为您提供了构建程序的更简单方式.Lambda 表达式 为内联代码块定义一种新语法,其灵活性与匿名内部类一样,但样板文件 ...

  8. Java for LeetCode 057 Insert Interval

    Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...

  9. Java for LeetCode 047 Permutations II

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

随机推荐

  1. search(12)- elastic4s-聚合=桶+度量

    这篇我们介绍一下ES的聚合功能(aggregation).聚合是把索引数据可视化处理成可读有用数据的主要工具.聚合由bucket桶和metrics度量两部分组成. 所谓bucket就是SQL的GROU ...

  2. Istio的流量管理(实操一)(istio 系列三)

    Istio的流量管理(实操一)(istio 系列三) 使用官方的Bookinfo应用进行测试.涵盖官方文档Traffic Management章节中的请求路由,故障注入,流量迁移,TCP流量迁移,请求 ...

  3. linux-rpm强制安装跳过依赖包

    [root@localhost ~]# rpm -ivh tigervnc-1.10.80-4.20200317git8b4be5fd.el7.x86_64.rpm --nodeps --force ...

  4. 如何搭建一个WEB服务器项目(三)—— 实现安卓端联网登录

    安卓端调用服务器登录函数进行验证登录 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟.欢迎各位大佬来评论区提出问题或者是指出错误,分享宝贵经验 ...

  5. xshell密钥登录服务器

    其实很简单 1 xshell 生成pub key . 在工具 -> 用户密钥管理. 生成 .另存为id_rsa_1024.pub 2.服务器上ssh-keygen 3.将生成的文件id_rsa_ ...

  6. vim命令备份

    vim命令 vim键盘位置说明 在命令状态下对当前行用 == (连按=两次), 或对多行用 n==(n是自然数)表示自动缩进从当前行起的下面n行. 可以试试把代码缩进任意打乱再用 n== 排版,相当于 ...

  7. 类linux 系统上端口被占用

    好几次遇到这问题,明明Ctrl+C退出了node,但是下次启动的时候总是会报错: listen EADDRINUSE :::80 之类的. 这时候可能是被占用,也可能是上次进程没有真的退出. ps - ...

  8. DPDK 无锁队列Ring Library原理(学习笔记)

    参考自DPDK官方文档原文:http://doc.dpdk.org/guides-20.02/prog_guide/ring_lib.html 针对自己的理解做了一些辅助解释. 1 前置知识 1.1 ...

  9. [原创][开源] SunnyUI.Net 开发日志:ListBox 增加跟随鼠标滑过高亮

    QQ群里,寸目说,ListBox鼠标移动时,当前行需要焦点,我想了想,不难实现啊 不就是在鼠标移动时重绘Item嘛,何况选中的Item已经改了颜色了. 见UIListBox代码: protected ...

  10. mysql 查询获取排名的方法(绝对有效)

    http://blog.csdn.net/k8080880/article/details/11253305 select case when pid=0 then case when @prevTy ...