题目

链接:https://ac.nowcoder.com/acm/contest/3286/C

牛牛给你一个只包含字符1到9的字符串S, 你现在可以在任意两个数字字符之间插入’+'号构成一个式子,现在希望你能求出所有式子的结果之和。
NiuNiu gives you a string contains only digit characters ‘1’ to ‘9’, and tell you that you can insert a ‘+’ for any number of times between any two characters to form a formula. Now he wants to know the sum of the results of all the different formulas that can be formed.

输入描述:
输入只包含一个数字字符的字符串S(1≤∣S∣≤10)
The input is a string S only contains digit characters ‘1’ to ‘9’. (1≤∣S∣≤10)

输出描述:
输出总和
Print the sum.
示例1

输入
125
输出
176
说明
可以得到插入的结果:
125(不插入)
1 + 25 =26
12 + 5= 17
1 + 2 + 5 = 8
所以答案为: 125 + 26 + 17 + 8 = 176。
All the possible formulas:
125 (insert no ‘+’)
1 + 25 = 26
12 + 5 = 17
1 + 2 + 5 = 8
So the answer is 125 + 26 + 17 + 8 = 176.

示例2

输入
9999999999
输出
12656242944

DFS深度优先回溯算法

思路:

  1. 把输入的字符串input,转换为字符数组;
  2. 用回溯递归的方式,拼接字符串有两种选择,要么带+加号,要么不带+加号;
  3. 退出条件为,当字符数到倒数第二个数字的时候,手动拼接最后一个字符,放到结果列表中resultList
  4. 遍历结果列表中resultList中的字符串,按照+加号分割为数字字符串,把数字字符串转换为数字累加即可。
package backtracking;import java.util.ArrayList;
import java.util.List;public class AddPlusSymbol {public static void main(String[] args) {AddPlusSymbol obj = new AddPlusSymbol();String input1 = "125";Long result1 = obj.addPlus(input1);System.out.println("input > " + input1 + " ; result > " + result1);String input2 = "9999999999";Long result2 = obj.addPlus(input2);System.out.println("input > " + input2 + " ; result > " + result2);}public long addPlus(String input) {if (input == null || input.length() == 0) {return 0;}long result = 0;List<String> resultList = new ArrayList<String>();char[] chars = input.toCharArray();// dfsdfs(chars, resultList, "", 0);// loop list sumfor (String s: resultList) {String[] nums = s.split("\\+");for (String n: nums) {result += Long.parseLong(n);}}return result;}private void dfs(char[] chars, List<String> resultList, String s, int start) {// exitif (start == chars.length - 1) {resultList.add(s + chars[chars.length - 1]);return;}s += chars[start];dfs(chars, resultList, s + '+', start + 1);dfs(chars, resultList, s, start + 1);}
}

代码下载

https://github.com/zgpeace/awesome-java-leetcode/blob/master/code/LeetCode/src/backtracking/AddPlusSymbol.java

算法:回溯九 Plus在数字字符串中加入加号,求所有情况的和相关推荐

  1. 从字母数字字符串中提取数字

    http://office.microsoft.com/zh-cn/excel-help/HA001154901.aspx 本文的作者是 Ashish Mathur,是一位 Microsoft MVP ...

  2. 编写一个算法frequency,统计在一个输入字符串中各个不同字符出现的频度。用适当的测试数据来验证这个算法。

    一.学习要点: 1.字符串中每个字母都有一个代表的ASCII值,每个字母统计的次数也是一个数值,两个数字可分别作为数值数组的下标和元素: 2.也可利用string中的find.erase和一个整型数字 ...

  3. java随机数去重排序_数组去重及排序/0~10随机数字/字符串中出现最多的字符及次数...

    数组去重及排序: var arr = [1,5,1,2,6,8,1,81,9,0]; for(var i=0;i for(var j=i+1;j if(arr[i] == arr[j]){ arr.s ...

  4. JAVA【1024】程序员趣味活动,给定一串数字字符串,保证顺序不变的情况下,加入任意数量个“+“,使其结果等于1024

    题目要求: 在数字之间任意添加"+"号,使等式成立=1024,数字的顺序不能改变. 举例: 题目1:512512=1024 答案1:512+512=1024 题目2:2562565 ...

  5. python在每个字符后加上逗号_Python将逗号添加到数字字符串中

    使用Python v2,我的程序中有一个值 在最后输出一个四舍五入到小数位数的数字: 像这样: print ("Total cost is: ${:0.2f}".format(To ...

  6. 面试宝典_Python.常规算法.0002.输出任意两个字符串中最长公共子串?

    面试题目: 1. 用PY实现求任意两个字符串最长的公共子串? 解题思路: 1. 先求出长度最小的字符串,然后遍历其索引,这样可以避免字符串索引溢出,然后判断对应索引的值是否相同,相同的话就加到目标字典 ...

  7. c++Numerical string sort数字字符串排序的实现算法(附完整源码)

    C++Numerical string sort数字字符串排序的实现算法 C++Numerical string sort数字字符串排序的实现算法完整源码(定义,实现,main函数测试) C++Num ...

  8. 快速找出两个字符串中所有相同的字符

    面试时看到一个试题, 编写算法, 快速找出两个字符串中所有相同的字符. 现实现如下: 1. 利用TreeSet来查找是否有相同的字符(之前是利用TreeSet来查找) 2. 利用HashSet来查找是 ...

  9. Python关于去除字符串中空格的方法

    需要将字符串中的空格去掉的情况,可以使用下面几种解决方法: 1.strip()方法:该方法只能把字符串头和尾的空格去掉,但是不能将字符串中间的空格去掉. s=' This is a demo 'pri ...

  10. 关于Python去掉字符串中的空格

    经常会遇到需要将字符串中的空格去掉的情况,通常我们有三种解决方法: 1.strip(char)方法:该方法是不能将字符串中间的空格去掉的!! strip():把头和尾的空格去掉 >>> ...

最新文章

  1. docker--在centos镜像安装mysql
  2. 元素节点、属性节点、文本节点 的节点属性
  3. Android--视频播放器
  4. 基于VTK与Qt的体绘制程序
  5. 软件架构师的工作流程
  6. java读取配置文件properties
  7. SSP状态寄存器SSPSTAT
  8. weblogic hibernate HqlToken
  9. [蓝桥杯][2018年第九届真题]全球变暖
  10. Java字符串格式化记录
  11. python产生随机数
  12. MAC上安装JDK后的所在目录
  13. 临床数据库挖掘系列2-使用SEER.stat软件提取数据
  14. 微信小程序在线成语接龙答题有奖1.5.1版源码
  15. 【每日新闻】高盛与苹果合作推出AppleCard
  16. vr全景图片制作方法
  17. 【安全知识分享】PPTX|典型事故和应急救援案例分析(25页)(附下载)
  18. Pulsar 社区周报 2020-09-12 ~ 09-18
  19. rnnlm源码分析(四)
  20. 云服务AppId或AppKey和AppSecret生成策略(对外接口使用)

热门文章

  1. mysql处理字符串函数,MySQL常用函数--字符串处理
  2. android自动完成输入框,Android——自动完成输入框提示功能的菜单_AutoCompleteTextView...
  3. 前端工程师如何与设计师合作能提高效率
  4. [leetcode] Sudoku Solver
  5. java集合学习笔记--二维集合HashMap
  6. Android基础-Content Provider
  7. Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议
  8. 为多个VLAN实现DCHP
  9. mybatis逆向工程利用mybatis-generator-core自动生成代码
  10. 数据结构实验1-线性表的顺序实现