当前位置:网站首页>【LeetCode】415. 字符串相加
【LeetCode】415. 字符串相加
2022-06-24 07:07:00 【Uaena_An】
【LeetCode】415. 字符串相加

🧸读题
将两个字符串 用int形式相加,结果用string打印。
此题不能用int/long因为测试用例很长,longlong也存不下,所以要按位计算!
🧸代码
定义两个标记 ned1/end2从两个数组尾部开始向前走,并且用carry记录进位,ret计算两数之和,两数相加>10 则ret -= 10 ,carry置1,否则carry置0;
创建s字符串将计算结果尾插,最后再翻转过来(这么做是为了防止,头插会一直挪动数据,造成O(N2))
class Solution {
public:
string addStrings(string num1, string num2) {
int end1 = num1.size()-1,end2 = num2.size()-1;
int carry = 0;
string s;
while(end1 >=0 ||end2>=0)
{
int x1 = 0;
if(end1>= 0 )
{
x1 = num1[end1] - '0';
--end1;
}
int x2 = 0;
if(end2>= 0 )
{
x2 = num2[end2] - '0';
--end2;
}
int ret = x1+x2 + carry;
if(ret > 9)
{
ret-=10;
carry = 1;
}
else
{
carry = 0;
}
s += ret + '0';
}
if(carry == 1)
{
s += '1';
}
reverse(s.begin(),s.end());
return s;
}
};
🧸解读代码
定义两个标记,从两个数组尾部向前访问。
int end1 = num1.size()-1,end2 = num2.size()-1;
定义carry保存进位
int carry = 0;
定义s保存结果
string s;
循环只要有一方没走完,就继续访问,因为carry可能有值,有可能会一直进位
例如:9999+11 ,11走完后,carry = 1,所以9999还要继续访问知道carry被置0
while(end1 >=0 ||end2>=0)
{
x1x2是用来进行单位计算的 也就是x1 = num1[end]
因为每一次计数都要重置x1,x2
所以
int x1 = 0;
判断end1有没有走完,没走完就继续算,走完了x1 = 0
if(end1>= 0 )
{
x1 = num1[end1] - '0';
--end1;
}
跟x1同理
int x2 = 0;
if(end2>= 0 )
{
x2 = num2[end2] - '0';
--end2;
}
ret是存储 x1+x2的结果
int ret = x1+x2 + carry;
计算进位,如果两数相加>9 则ret-=10,进位 = 1
if(ret > 9)
{
ret-=10;
carry = 1;
}
else
{
必须判断else ,否则进位可能一直是1
carry = 0;
}
尾插两数相加的结果
s += ret + '0';
}
里面判断完,如果进位里还有一个数,还要尾插进去
if(carry == 1)
{
s += '1';
}
最后翻转则得到正确答案
reverse(s.begin(),s.end());
return s;
}
加油 祝你拿到心仪的offer!
边栏推荐
- 数据中台:数据中台全栈技术架构解析,附带行业解决方案
- 520. 检测大写字母
- pymysql 向MySQL 插入数据无故报错
- Shell basic operators -- relational operators
- Application of tidb in Netease games
- K8s deployment of highly available PostgreSQL Cluster -- the road to building a dream
- 数据中台:国内大厂中台建设架构集锦
- How to mount a USB hard disk with NTFS file format under RHEL5 system
- PHP code encryption + extended decryption practice
- mysql组合索引的有序性
猜你喜欢

【NOI模拟赛】寄(树形DP)

一文讲透,商业智能BI未来发展趋势如何

“不平凡的代理初始值设定不受支持”,出现的原因及解决方法

The form image uploaded in chorme cannot view the binary image information of the request body

基于QingCloud的 “房地一体” 云解决方案

K8S部署高可用postgresql集群 —— 筑梦之路

Matlab camera calibrator camera calibration

一文详解|增长那些事儿

pymysql 向MySQL 插入数据无故报错

Database migration from PostgreSQL to MySQL
随机推荐
Summary of methods in numpy
表单图片上传在Chorme中无法查看请求体的二进制图片信息
The pie chart with dimension lines can set various parameter options
[life thinking] planning and self-discipline
520. 检测大写字母
不能改变虚拟机电源状态报错解决方案
利用sonar做代码检查
数据中台:数据采集和抽取的技术栈详解
opencv最大值滤波(不局限于图像)
【团队管理】测试团队绩效管理的25点小建议
Camera projection matrix calculation
RuntimeError: Missing dependencies:XXX
WebRTC系列-网络传输之5选择最优connection切换
JS to find and update the specified value in the object through the key
Detailed explanation of Base64 coding and its variants (to solve the problem that the plus sign changes into a space in the URL)
MySQL 因字符集问题插入中文数据时提示代码 :1366
Shell basic operator -- arithmetic operator
获取屏幕宽高工具类
2022春招面试总结
It is enough to read this article about ETL. Three minutes will let you understand what ETL is