LeetCode 415. 字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

 

提示:

num1 和num2 的长度都小于 5100
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式

思路:

emmmm,最基础的大整数加法,注意下题目的条件,长度不小于5100就行啦~

代码:

 1 struct bign
 2 {
 3     int len,d[5110];
 4     bign()
 5     {
 6         memset(d,0,sizeof(d));
 7         len=0;
 8     }
 9 };
10 
11 bign change(string a)
12 {
13     bign b;
14     for(int i=a.size()-1;i>=0;--i)
15     {
16         b.d[b.len++]=a[i]-'0';
17     }
18     return b;
19 }
20 string add(bign a,bign b)
21 {
22     int carry=0;
23     string c;
24     for(int i=0;i<a.len||i<b.len;++i)
25     {
26         int temp=a.d[i]+b.d[i]+carry;
27         c.push_back(temp%10+'0');
28         carry=temp/10;
29     }
30     if(carry!=0)
31         c.push_back(carry+'0');
32     reverse(c.begin(),c.end());
33     return c;
34 }
35 
36 class Solution {
37 public:
38     string addStrings(string num1, string num2) {
39         bign a=change(num1);
40         bign b=change(num2);
41         return add(a,b);
42     }
43 };

 

posted @ 2021-02-07 11:51  青云流风饰霓裳  阅读(43)  评论(0)    收藏  举报