leetcode415. 字符串相加

news/2024/11/9 10:07:58/

个人主页:平行线也会相交
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创
收录于专栏【LeetCode】
🍓希望我们一起努力、成长,共同进步。在这里插入图片描述

题目链接

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

示例一:

这里是引用

示例二:

在这里插入图片描述

示例三:

在这里插入图片描述

在这里插入图片描述
这道题最好不要将字符串转换为数字,因为数据比较大,容易造成溢出。那么就只能通过字符串来模拟加法运算,从低位到高位逐位相加,并将进位记录下来。最后将不能进位的结果字符串与进位字符串相加即为最终结果。

解题思路(尾插):

1、定义两个指针分别指向两个字符串的末位:end1 = num1.size()-1end2 = num2.size()-1,同时定义一个变量 carry,即起初定义一个int carry = 0; 记录进位;
2、从末位开始逐位相加,同时将进位加入下一位运算中,结果加入新的字符串中,如:(num1.[end1] - ‘0’ + num2.[end2] - ‘0’ + carry) % 10;
3、逆序最终得到的字符串,去掉可能存在的前导零后,输出结果即可。

解题代码一(尾插):

class Solution {
public:string addStrings(string num1, string num2) {string str;int end1 = num1.size()-1;int end2 = num2.size()-1;int carry = 0;while(end1>=0||end2>=0){int val1 = end1>=0?num1[end1]-'0':0;int val2 = end2>=0?num2[end2]-'0':0;int ret = val1+val2+carry;carry = ret/10;ret = ret%10;str += ('0'+ret);end1--;end2--;}if(carry == 1){str += '1';}reverse(str.begin(),str.end());return str;}
};

解题思路二(头插):

如果要使用头插的话,这里使用了string类中的insert,思路和上面的思路大体其实是一样的,只不过是使用了一个insert。这种方法效率比较低,但是可以通过,大家自行选择。
在这里插入图片描述

解题代码二(头插):

class Solution {
public:string addStrings(string num1, string num2) {string str;int end1 = num1.size()-1;int end2 = num2.size()-1;int carry = 0;while(end1>=0||end2>=0){int val1 = end1>=0?num1[end1]-'0':0;int val2 = end2>=0?num2[end2]-'0':0;int ret = val1+val2+carry;carry = ret/10;ret = ret%10;str.insert(str.begin(),ret+'0');//str += ('0'+ret);end1--;end2--;}if(carry == 1){//str += '1';str.insert(str.begin(),'1');}//reverse(str.begin(),str.end());return str;}
};

在这里插入图片描述


http://www.ppmy.cn/news/432228.html

相关文章

基于html+css的图展示132

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

【答疑】不拆盘,区分西数element 12T是氦气盘还是空气盘

缘由 最近在亚马逊上买了块element 12T 又得知这块盘分7碟氦气盘和5碟空气盘(后者性能更强) 所以去找了一下区分方法,如下 区分方法 通过查询其SMART信息,如果里面里面有一项“Helium Monitor”(也就是“氦气监控”…

华为freebuds4e和5i哪个好 华为freebuds5i和4e区别

一:华为freebuds5i和4e区别 1、佩戴设计 华为freebuds5i:采用的是入耳式设计,佩戴起来更加的牢固,被动降噪效果更好 华为freebuds4e:采用的是半入耳式的设计,更加的适合长时间佩戴。 2、重量 华为freebuds5…

Centos 7硬盘扩容

Centos 7硬盘扩容 一、 需要扩容的为 /dev/mapper/centos-root [rootbogon ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 17G 1.7G 16G 10% /二、硬盘扩容 对硬盘进行扩容操作,重启系统后生效。 [rootbogon…

硬盘的IDE、AHCI和NVMe模式区别

硬盘接口标准——IDE、AHCI和NVMe ★引言 截至2017年,硬盘的接口标准(工作模式)有IDE、AHCI和NVMe。 NVMe最先进,AHCI次之,IDE已被逐渐淘汰。 ★IDE 集成驱动电子设备(英语:Integrated Dri…

磁盘512n,512e,4k原生磁盘的区别和操作系统支持

磁盘按照物理扇区大小的不同分为三种512byte原生扇区硬盘(512n),4KB扇区仿真512byte(512E)磁盘,4kB扇区原生磁盘。 首先说物理扇区,扇区是硬盘上最小的读写单位,这个是硬盘决定的,不是操作系统决定的。当然可以被修改,但是需要操作系统支持,否则也不会有操作系统支持4k的问…

hp-gen8安装esxi6.7找不到raid硬盘填坑

该方法基本适用hp-gen8安装esxi6.7及以上的版本,解决gen8安装esxi6.7及以上版本中无法使用RAID硬盘的问题,解决思路是打上hpvsa驱动并找回硬盘重新挂载。 下载HP定制ESXI6.7镜像,这里安装esxi6.7u3版本OEM-ESXI67U3-HPE(需自行注…

NVMe详解(四)

NVMe详解(四) 5. NVMe协议定义的命令5.0 命令执行过程5.1 命令分类5.2 命令通用格式5.3Admin 指令5.4 NVM指令 6 控制器结构6.1 命令执行过程6.2 重启(Reset)6.2.1 Controller level6.2.2 Queue level 6.3中断6.4 Controller初始化…