[LeetCode] 415.字符串相加

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

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

示例 1:

输入: num1 = "11", num2 = "123" 输出:"134"

示例 2:

输入: num1 = "456", num2 = "77" 输出:"533"

解题思路与算法:

方法1:模拟

这题需要我们输出两个数相加以后的结果,我们可以通过模拟 "竖式加法" 对该题求解,"竖式加法"是我们小时候经常对两个数进行计算的方式,两个数的每位数从右到左依次相加,两数之和大于10就进位到上一个数,反复操作,最后得出结果

实现很简单,我们创建两个指针end1和end2分别指向num1和num2的最后一个元素,然后创建一个变量carry,查看当前是否进位,若有两个不数位不同的两数相加,**end1或end2位负数时就往数位低的那个数高位补0,**这样做就可以处理当两个数数位不同的情况

代码演示:

cpp 复制代码
class Solution 
{
public:
    string addStrings(string num1, string num2) 
    {
        int end1, end2, carry;
        end1 = num1.size() - 1, end2 = num2.size() - 1;
        carry = 0;
        string s1;

        while(end1 <= 0 || end2 <= 0)
        {
            int sum = 0;
            int i = end1 <= 0 ? num1[end1] - '0' : 0;
            int j = end2 <= 0 ? num2[end2] - '0' : 0;
            
            sum = end1 + end2 + carry;
            carry = sum / 10;
            s1 += sum % 10 + '0';
                
            --end1;
            --end2;            
        }
        if(carry != 0)
        {
            S1 += carry;
        }

        return s1;
    }
};
相关推荐
老赵聊算法、大模型备案4 小时前
北京市生成式人工智能服务已备案信息公告(2025年12月11日)
人工智能·算法·安全·aigc
CoderYanger5 小时前
C.滑动窗口-求子数组个数-越长越合法——2799. 统计完全子数组的数目
java·c语言·开发语言·数据结构·算法·leetcode·职场和发展
厕所博士5 小时前
红黑树原理前置理解—— 2-3 树
算法·2-3树·红黑树原理理解前置
萌>__<新6 小时前
力扣打卡每日一题————除自身外所有元素的乘积
数据结构·算法
xu_yule6 小时前
算法基础—搜索(2)【记忆化搜索+BFS+01BFS+Floodfill]
数据结构·算法
LinHenrY12276 小时前
初识C语言(自定义结构:结构体)
c语言·开发语言
s09071367 小时前
Xilinx FPGA使用 FIR IP 核做匹配滤波时如何减少DSP使用量
算法·fpga开发·xilinx·ip core·fir滤波
老马啸西风7 小时前
成熟企业级技术平台-10-跳板机 / 堡垒机(Bastion Host)详解
人工智能·深度学习·算法·职场和发展
子夜江寒7 小时前
逻辑回归简介
算法·机器学习·逻辑回归
软件算法开发7 小时前
基于ACO蚁群优化算法的多车辆含时间窗VRPTW问题求解matlab仿真
算法·matlab·aco·vrptw·蚁群优化·多车辆·时间窗