大数相加求和

本文介绍了一种解决两个字符串形式的大数相加问题的方法,通过补0的方式确保两个数位对齐,逐位相加并处理进位,最终得到正确的结果。

一、题目描述
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
二、思路分析
这是一道大数的求解。也显然是一道字符串的求值方法。这道题看了题解后,采用了一种补0的思路。因为不知道两个字符串的长度,因此如果直接计算的话,很容易会出现一个字符串加完了,另一个还没有加完。但是如果给加完的字符串补0,不让他们跳出循环,那就可以愉快的进行加减了。那么什么时候可以跳出循环呢?当然是两个字符串全部减到小于0,并且作为记录进位的数字也为0,则可以跳出循环了。
三、代码

class Solution {
public:
    string addStrings(string num1, string num2) {
            string s="";
            int i=num1.length()-1;
            int j=num2.length()-1;
            int add=0;
            while(i>=0||j>=0||add>0){
                int x=i>=0?num1[i]-'0':0;
                int y=j>=0?num2[j]-'0':0;
                int result = x+y+add;
                s.push_back(result % 10 + '0');
                add=result / 10;
                i--;
                j--;
            }
             reverse(s.begin(),s.end());
             return s;
            }
};

四、知识点分析
字符串真的有很多知识点,这道题里面有几个知识点:
1.字符减0,则将字符转为整数。
2.整数+0,将整数转为字符。
3.length()函数。
4.s.push_back(char c),把字符C加入s的字符串的末尾。
5.reverse(s.begin(),s.end()),把,字符串s从头到尾翻转过来。
5.字符串可以当成数组来用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值