415. Add Strings
Description
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
Solution
- 题意即将两个字符串形式的数字相加,其实就是高精度加法。
- 可以模拟竖式来进行字符串相加,实现方式多种多样,下面的代码虽然AC了,但是临时写成,多处凌乱,建议去搜索专门的高精度算法来研究学习。
void r(char *s)
{
int len = strlen(s);
char cp[len + 1];
for (int i = 0;i < len;i++)
cp[i] = s[len - i - 1];
memcpy(s,cp,len);
}
char rnt[6000];
char* addStrings(char* num1, char* num2) {
int len1 = strlen(num1),len2 = strlen(num2);
int len = len1>len2?len1:len2;
memset(rnt,0,sizeof(rnt));
r(num1);r(num2);
for (int i = 0;i < len;i++)
rnt[i] = '0';
for (int i = 0;i < len;i++) {
int a,b,c;
if (i < len1)
a = num1[i] - '0';
else
a = 0;
if (i < len2)
b = num2[i] - '0';
else
b = 0;
if (a + b > 9 || (a + b == 9 && rnt[i] == '1')) rnt[i + 1] = '1';
if (a + b == 9 && rnt[i] == '1')
rnt[i] = '0';
else
rnt[i] += (a + b) % 10;
}
r(rnt);
return rnt;
}