Leetcode每日刷题之字符串相加(C++)

在学习的同时也不要忘记适当练习,本题字符串相加主要在于字符串类型与整数类型的转化,要将字符串类型转化为整数类型计算后转化为字符串类型输出即可。

思路解析

根据题中给出的信息,我们不可以使用库函数计算大整数,也不能直接将字符串转化为整数,那么我们可以创建整数变量,将输入的字符串赋值与创建的临时变量,对临时变量计算,最终输出字符串类型即可

cpp 复制代码
class Solution {
public:
    string addStrings(string num1, string num2) 
    {
        string str;
        int end1 = num1.size() - 1;
        int end2 = num2.size() - 1;
        int next = 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 + next;
            next = ret / 10;
            ret = ret % 10;

            str += (ret + '0');
        }

        if(next == 1)
        {
            str += '1';
        }

        reverse(str.begin(),str.end());

        return str;
    }
};

代码分析

1. 首先函数参数输入了两个字符串变量,这时我们先计算两字符串长度,使用到了 String类的 string::size 接口;

2. 然后创建临时变量 next 做进位数字(比如 6+7 = 13,next 就是十位数上的进位1),这时使用 while 循环,循环进行的条件是只要两字符串均未计算完都不会结束,所以使用或运算 "||"

3. 接着创建两个整数类型临时变量用来存储字符串转为整数类型的整数,然后对 ret 进行计算,再进位给临时变量 next ,最后转化为字符串类型

4. 需要注意的一点就是如果两数之和为10 那么就需要特殊对字符串 + '1',最后将得到的字符串反转就可以了,这里使用 reverse 接口,详情点击reverse

相关推荐
wabs6668 分钟前
关于二叉树【力扣572.另一棵树的子树的思考】
数据结构·c++·算法·leetcode·二叉树
hanlin0312 分钟前
刷题笔记:力扣第41题-缺失的第一个正数
笔记·算法·leetcode
shehuiyuelaiyuehao44 分钟前
算法50,分治归并,数组中的逆序对
java·算法
风合星语1 小时前
2026 ROS 2 Lyrical C++ 入门(五):Action 实战——任务反馈、取消与超时处理
c++·机器人·ros2·异步编程·lyrical
阳明山水1 小时前
校准分位数驱动智能库存决策
人工智能·深度学习·算法·机器学习·架构
91刘仁德2 小时前
C++ 继承和多态 设计模式
c语言·c++·笔记
库玛西2 小时前
哈夫曼树与前缀编码:数据压缩的贪心核心
c语言·c++·笔记·考研
别动我齐刘海3 小时前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人
zhangfeng11333 小时前
《从“人工适配“到“智能生成“:KernelSwift 跨国产芯片算子迁移全栈方案解读》 —— 强调范式跃迁和跨硬件属性,适合偏架构分析的写法
人工智能·算法·华为·ai编程·npu
0+1113 小时前
算法 --滑动窗口
c++·算法·leetcode