题目描述
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法:
解题思路:模拟竖式加法
1.设定i,j分别指向nums1,nums2的尾部,模拟人工加法
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| class Solution { public: string addStrings(string num1, string num2) { string res; int k=0; int i=num1.size()-1,j=num2.size()-1; int a,b; int sum; char ch; while(i>=0&&j>=0) { a=num1[i]-'0'; b=num2[j]-'0'; sum=a+b+k; if(sum>9) k=1; else k=0; sum%=10; ch=sum+'0'; res+=ch; i--; j--; } while(i>=0) { a=num1[i]-'0'; sum=a+k; if(sum>9) k=1; else k=0; sum%=10; ch=sum+'0'; res+=ch; i--; } while(j>=0) { b=num2[j]-'0'; sum=b+k; if(sum>9) k=1; else k=0; sum%=10; ch=sum+'0'; res+=ch; j--; } if(k==1) res+='1'; reverse(res.begin(),res.end()); return res; } };
|