问题描述
Given two non-negative integers num1
and num2
represented as string, return the sum of num1
and num2
.
Note:
- The length of both
num1
andnum2
is < 5100. - Both
num1
andnum2
contains only digits0-9
. - Both
num1
andnum2
does not contain any leading zero. - You must not use any built-in BigInteger library or convert the inputs to integer directly.
思路:给定两个数字字符串,求这两个数字字符串的和。由于字串的长度是不固定的,所以不能直接将字串转换成数字进行计算,较好地方法就是逐位转换成数字,进行计算后,在转换成字符串。
代码:
class Solution {
public:
string addStrings(string num1, string num2) {
int len1=num1.size(),len2=num2.size(),add=0;//add用于记录逐位相加的结果
if(len1<len2) return addStrings(num2,num1);//这里是为了使num1字串位数最长
for(int i=1;i<=len1 && (add || i<=len2);i++,add/=10)
{
add+=num1[len1-i]-'0'+(i<=len2 ? num2[len2-i]-'0' : 0);//逐位进行计算和
num1[len1-i]=add%10+'0';//将得到的数在num1上进行更新
}
return (add ? to_string(add) : "")+num1;//这里是为了处理最高位的进位
}
};