leetcode-累加数(C++)
class Solution {
public:
string getSum(string& num1,string& num2){ //两个字符串表示的数字相加的算法,最后返回一个字符串sum
int val,flag=,len1=num1.size(),len2=num2.size();
string sum;
while(len1||len2){ //字符串相加,从个位数到百位,千位,万位
int val=; //每一位数的和
if(len1>) {val+=num1[len1-]-''; len1--;}
if(len2>){val+=num2[len2-]-''; len2--;}
sum+=to_string((val+flag)%);
flag=(val+flag)/;
}
if(flag)sum+=""; //最后的进位要加上去
reverse(sum.begin(),sum.end());
return sum;
}
bool dfs(string& num1,string& num2,string& num3){ //num1,num2相加是否等于后面的数字,同时探索到最后一个数字
if(num3.size()==)return true;
string sum=getSum(num1,num2);
for(int i=;i<=num3.size();i++){
string str=num3.substr(,i), tem=num3.substr(i);
if(str==sum&&dfs(num2,sum,tem))return true; //三个数字分别为num2,sum,tem
if(num3[]=='')break; //"0"在首位那么跳过
}
return false;
}
bool isAdditiveNumber(string num) {
if(num.size()<)return false;
int size=num.size();
for(int i=;i<size-;i++){
string num1=num.substr(,i); //先获得三个数字,i从1开始,就是获得三个个位数
for(int j=i+;j<size;j++){
//c++的substr函数是string.substr(index,len) len表示切割的长度。 如s=“0123456" s.substr(4)="456"
string num2=num.substr(i,j-i);
string num3=num.substr(j);
if(dfs(num1,num2,num3))return true;
if(num[i]=='')break;
}
if(num[]=='')break;
}
return false;
} };
leetcode-累加数(C++)的更多相关文章
- C#版 - Leetcode 306. 累加数 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- [Swift]LeetCode306. 累加数 | Additive Number
Additive number is a string whose digits can form additive sequence. A valid additive sequence shoul ...
- LeetCode 三数之和 — 优化解法
LeetCode 三数之和 - 改进解法 题目:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复 ...
- 【数据结构】Hash表简介及leetcode两数之和python实现
文章目录 Hash表简介 基本思想 建立步骤 问题 Hash表实现 Hash函数构造 冲突处理方法 leetcode两数之和python实现 题目描述 基于Hash思想的实现 Hash表简介 基本思想 ...
- Leetcode 1577 数的平方等于两数乘积的方法数
Leetcode 1577 数的平方等于两数乘积的方法数 题目 给你两个整数数组 nums1 和 nums2 ,请你返回根据以下规则形成的三元组的数目(类型 1 和类型 2 ): 类型 1:三元组 ( ...
- [LeetCode]丑数 II&C++中priority_queue和unordered_set的使用
[LeetCode]丑数 II&C++中priority_queue和unordered_set的使用 考虑到现实因素,LeetCode每日一题不再每天都写题解了(甚至有可能掉题目?--)但对 ...
- LeetCode两数之和
LeetCode 两数之和 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是 ...
- python LeetCode 两数相除
近一个月一直在写业务,空闲时间刷刷leetcode,刷题过程中遇到了一道比较有意思的题目,和大家分享. 题目描述: 给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使 ...
- [LintCode/LeetCode]——两数和、三数和、四数和
LintCode有大部分题目来自LeetCode,但LeetCode比较卡,下面以LintCode为平台,简单介绍我AC的几个题目,并由此引出一些算法基础. 1)两数之和(two-sum) 题目编号: ...
- LeetCode.1175-质数排列(Prime Arrangements)
这是小川的第413次更新,第446篇原创 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第264题(顺位题号是1175).返回1到n的排列数,以使质数处于质数索引(索引从1开始).(请 ...
随机推荐
- EF Core中Key属性相同的实体只能被跟踪(track)一次
在EF Core的DbContext中,我们可以通过DbContext或DbSet的Attach方法,来让DbContext上下文来跟踪(track)一个实体对象,假设现在我们有User实体对象,其U ...
- NodeJs——入门
关于NPM: npm 是 nodejs 的包管理和分发工具.它可以让 javascript 开发者能够更加轻松的共享代码和共用代码片段,并且通过 npm 管理你分享的代码也很方便快捷和简单. 一 No ...
- CF1066A Vova and Train(模拟)
大水题... 题目要求你求能看到的灯笼数,我们可以分为3部分 总共的灯笼数——————1 在 l 左面的灯笼数(不包括lll)——————2 在 r 左面的灯笼数(包括rrr)——————3 我们知道 ...
- 实现一个shell程序
实现一个自己的shell程序,这个程序有这些功能:解释执行命令,支持输入输出重定向,支持管道,后台运行 程序.当运行该程序后,它支持以下的命令格式: 1.单个命令,如:ls.2.带l到多个参数的命令, ...
- Shell中的${}、##和%%使用范例
假设定义了一个变量为,代码如下: file=/dir1/dir2/dir3/my.file.txt 可以用${ }分别替换得到不同的值: ${file#*/}: 删掉第一个 / 及其左边的字符串:di ...
- 继续深入更新shell脚本容易出错的地方
一.在shell中用到如果需要输入某些值,需要用到read -p命令 这是我写的猜数字游戏,一开始在输出的时候,屏幕上总会打印输出 "INT" 经过反复的练习才发现 双引号后面应 ...
- hadoop生态搭建(3节点)-16.elk配置
# ==================================================================ELK环境准备 # 修改文件限制 # * 代表Linux所有用户 ...
- shell中的死记硬背
一.shell的引号们 1."" -> 双引号(不保留完整内容,比如遇到$, 反引号, \ 等就会执行相应的shell) echo "Today is `date` ...
- tcp/ip五层协议
TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族.互联网协议(Internet Protocol Suite)是一个网络通信模型,以及一整个网络传输协议家族,为互联 ...
- Python学习笔记一:第一个Python程序,变量,字符编码与二进制,用户交互程序
第一个python程序 Windows:设置环境变量,X:\pthonxxx,xxx是版本号 在命令提示符下 输入python,进入解释器 >>>print(“Hello World ...