算法:回溯九 Plus在数字字符串中加入加号,求所有情况的和
题目
链接: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深度优先回溯算法
思路:
- 把输入的字符串input,转换为字符数组;
- 用回溯递归的方式,拼接字符串有两种选择,要么带
+
加号,要么不带+
加号; - 退出条件为,当字符数到倒数第二个数字的时候,手动拼接最后一个字符,放到结果列表中
resultList
。 - 遍历结果列表中
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在数字字符串中加入加号,求所有情况的和相关推荐
- 从字母数字字符串中提取数字
http://office.microsoft.com/zh-cn/excel-help/HA001154901.aspx 本文的作者是 Ashish Mathur,是一位 Microsoft MVP ...
- 编写一个算法frequency,统计在一个输入字符串中各个不同字符出现的频度。用适当的测试数据来验证这个算法。
一.学习要点: 1.字符串中每个字母都有一个代表的ASCII值,每个字母统计的次数也是一个数值,两个数字可分别作为数值数组的下标和元素: 2.也可利用string中的find.erase和一个整型数字 ...
- 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 ...
- JAVA【1024】程序员趣味活动,给定一串数字字符串,保证顺序不变的情况下,加入任意数量个“+“,使其结果等于1024
题目要求: 在数字之间任意添加"+"号,使等式成立=1024,数字的顺序不能改变. 举例: 题目1:512512=1024 答案1:512+512=1024 题目2:2562565 ...
- python在每个字符后加上逗号_Python将逗号添加到数字字符串中
使用Python v2,我的程序中有一个值 在最后输出一个四舍五入到小数位数的数字: 像这样: print ("Total cost is: ${:0.2f}".format(To ...
- 面试宝典_Python.常规算法.0002.输出任意两个字符串中最长公共子串?
面试题目: 1. 用PY实现求任意两个字符串最长的公共子串? 解题思路: 1. 先求出长度最小的字符串,然后遍历其索引,这样可以避免字符串索引溢出,然后判断对应索引的值是否相同,相同的话就加到目标字典 ...
- c++Numerical string sort数字字符串排序的实现算法(附完整源码)
C++Numerical string sort数字字符串排序的实现算法 C++Numerical string sort数字字符串排序的实现算法完整源码(定义,实现,main函数测试) C++Num ...
- 快速找出两个字符串中所有相同的字符
面试时看到一个试题, 编写算法, 快速找出两个字符串中所有相同的字符. 现实现如下: 1. 利用TreeSet来查找是否有相同的字符(之前是利用TreeSet来查找) 2. 利用HashSet来查找是 ...
- Python关于去除字符串中空格的方法
需要将字符串中的空格去掉的情况,可以使用下面几种解决方法: 1.strip()方法:该方法只能把字符串头和尾的空格去掉,但是不能将字符串中间的空格去掉. s=' This is a demo 'pri ...
- 关于Python去掉字符串中的空格
经常会遇到需要将字符串中的空格去掉的情况,通常我们有三种解决方法: 1.strip(char)方法:该方法是不能将字符串中间的空格去掉的!! strip():把头和尾的空格去掉 >>> ...
最新文章
- docker--在centos镜像安装mysql
- 元素节点、属性节点、文本节点 的节点属性
- Android--视频播放器
- 基于VTK与Qt的体绘制程序
- 软件架构师的工作流程
- java读取配置文件properties
- SSP状态寄存器SSPSTAT
- weblogic hibernate HqlToken
- [蓝桥杯][2018年第九届真题]全球变暖
- Java字符串格式化记录
- python产生随机数
- MAC上安装JDK后的所在目录
- 临床数据库挖掘系列2-使用SEER.stat软件提取数据
- 微信小程序在线成语接龙答题有奖1.5.1版源码
- 【每日新闻】高盛与苹果合作推出AppleCard
- vr全景图片制作方法
- 【安全知识分享】PPTX|典型事故和应急救援案例分析(25页)(附下载)
- Pulsar 社区周报 2020-09-12 ~ 09-18
- rnnlm源码分析(四)
- 云服务AppId或AppKey和AppSecret生成策略(对外接口使用)
热门文章
- mysql处理字符串函数,MySQL常用函数--字符串处理
- android自动完成输入框,Android——自动完成输入框提示功能的菜单_AutoCompleteTextView...
- 前端工程师如何与设计师合作能提高效率
- [leetcode] Sudoku Solver
- java集合学习笔记--二维集合HashMap
- Android基础-Content Provider
- Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议
- 为多个VLAN实现DCHP
- mybatis逆向工程利用mybatis-generator-core自动生成代码
- 数据结构实验1-线性表的顺序实现