题目表述:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1和num2的长度都小于 5100.num1和num2都只包含数字0-9.num1和num2都不包含任何前导零。- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
思路:
之前做个链表形式的加法(leetcode 2.两数相加),也用C#做过字符串形式的加法和乘法(大整数加法和乘法),思路都是一样的,写起来熟练很多。代码如下:
string addStrings(string num1, string num2) {
if(num1==\"0\") return num2;
if(num2==\"0\") return num1;
string ans=\"\";
int m=num1.size(),n=num2.size();
int charM,charN,sum,c=0;
while(m||n)
{
if(m>0) charM=num1[--m]-\'0\';
else charM=0;
if(n>0) charN=num2[--n]-\'0\';
else charN=0;
sum=charM+charN+c;
c= sum>9? 1:0;
sum=sum%10;
ans.push_back(char(sum+\'0\'));
}
if(c) ans.push_back(\'1\');
reverse(ans.begin(),ans.end());
return ans;
}
时间复杂度 O(n),空间复杂度O(1),测试运行时间 8 ms。
继续阅读与本文标签相同的文章
-
裂变方案:三大驱动力让用户主动分享裂变
2026-05-19栏目: 教程
-
华为鸿蒙成第五大操作系统,有希望超过iOS吗?
2026-05-19栏目: 教程
-
先破产再回国 贾跃亭这条路行不通
2026-05-19栏目: 教程
-
圆通速递决战双十一:率先实行涨价策略,其实取胜的关键不在于此
2026-05-19栏目: 教程
-
为什么要拥有一个区块链节点?
2026-05-19栏目: 教程
