• 【刷题训练】Leetcode415.字符串相加


    字符串相加

    题目要求

    在这里插入图片描述
    示例 1:

    输入:num1 = “11”, num2 = “123”
    输出:“134”
    示例 2:

    输入:num1 = “456”, num2 = “77”
    输出:“533”
    示例 3:

    输入:num1 = “0”, num2 = “0”
    输出:“0”

    提示:

    • 1 <= num1.length, num2.length <= 104
    • num1 和num2 都只包含数字 0-9
    • num1 和num2 都不包含任何前导零

    解题思路:

    1.首先确保num1的长度大于或等于num2的长度。
    2.倒叙遍历num1,每次把 num1[len] 和 num2[len] 的字符相加放入sum中。
    3.取结果的各位放入num1中。并通过sum判断是否进位。
    4.需要把字符转化为数字-'0',nums1[i]被赋值时要+'0'
    5.遍历结束后,如果仍需进位,就在nums1前添加’1’即可

    C++代码:

    class Solution {
    public:
        string addStrings(string num1, string num2) {
        //首先确保num1的长度大于或等于num2的长度
            if (num1.size() < num2.size())
                swap(num1, num2);
            //使用len1和len2保存num1和num2的最后一个字符的下标
            int len1 = num1.size() - 1;
            int len2 = num2.size() - 1;
            //flag用来记录相加时是否有进位。0/1
            int flag = 0;
            //循环遍历次数为num1的长度,从num1的后向前遍历
            while (len1 >= 0)
            {
            //使用sum变量来存储num1和num2的最后一位相加的结果
                int sum = 0;
                if (len2 >= 0)
                {
                    sum += num2[len2] - '0';
                }
                //flag作用就是:如果上次计算结果有进位,那么本次就会+1
                sum += num1[len1] - '0' + flag;
                //只取相加结果的个位数字
                num1[len1] = sum % 10 + '0';
                if (sum >= 10)
                {
                    flag = 1;
                }
                else
                {
                    flag = 0;
                }
                //控制遍历循环
                --len1;
                --len2;
            }
            //最后一步,千万不要忘记,判断最后结果是否有进位,有的话num1的长度还会增大一位。使用insert头插
            if (flag == 1)
                   { num1.insert(0, "1");}
            return num1;
        }
    };
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    运行结果

    在这里插入图片描述

  • 相关阅读:
    空间变形网络——STN
    督查督办管理系统适合什么企业
    ZTree自定义不可展开节点的折叠图标
    Elelemt-UI el-table 接收后端返回换行符 /n 不生效
    信息系统项目管理师必背核心考点(五十八)变更管理的主要角色
    JSP中include指令的功能简介说明
    【Linux】perf工作中最常用命令记录(包含火焰图)
    软件工程概述
    在idea中创建spring 微服务(boot)的Gradle项目 讲的很详细的
    脚手架开发流程详解
  • 原文地址:https://blog.csdn.net/luhaoran814/article/details/136714057