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 };

浙公网安备 33010602011771号