Add Strings
描述
Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.
Note
1.The length of both num1 and num2 is < 5100.
2.Both num1 and num2 contains only digits 0-9.
3.Both num1 and num2 does not contain any leading zero.
4.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.length();
int len2 = num2.length();
if (len1==0 || len2==0) return "0";
int len = (len1 > len2) ? len1 + 1 : len2 + 1;
int* rlt = new int[len];
memset(rlt, 0, sizeof(int)*len);
int ind = len-1;
int carry = 0;
int i = len1 - 1;
while (i >= 0)
{
int val = num1[i--] - '0' + carry;
rlt[ind--] = val % 10;
carry = val / 10;
}
rlt[ind] = carry;
ind = len - 1;
carry = 0;
int j = len2 - 1;
while (j >= 0)
{
int val = rlt[ind] + num2[j--] - '0' + carry;
rlt[ind--] = val % 10;
carry = val / 10;
}
//出现第二个数字的长度小于第一个数字的长度的情况,要处理进位carry向前的传递!!
while (ind >= 0)
{
int val = rlt[ind] + carry;
rlt[ind--] = val % 10;
carry = val / 10;
}
//转化成string
string s = "";
int strInd = (rlt[0]==0)?1:0;
for (; strInd < len; strInd++)
{
s += (rlt[strInd] + '0');
}
return s;
}
};