题解 | #大数加法#
大数加法
https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
#include <stdlib.h>
#include <string.h>
char* solve(char* s, char* t ) {
// write code here
char* str, buf;
int n, m, len, i = -1;
n = strlen(s);
m = strlen(t);
if (n > 100000 || m > 100000)
return NULL;
len = n + 2;
if (n < m) len = m + 2;
if ((str = (char*)malloc(len)) == NULL) return NULL;
memset(str, 0, len);
while (len) {
i++;
n--;
m--;
len--;
if (n >= 0 && m >= 0) buf = str[i] + s[n] + t[m] - '0' - '0';
else if (n < 0 && m >= 0) {
if (str[i] > 0) buf = str[i] + t[m] - '0';
else {
str[i] = t[m];
continue;
}
} else if (n >= 0 && m < 0) {
if (str[i] > 0) buf = str[i] + s[n] - '0';
else {
str[i] = s[n];
continue;
}
}
else {
if(str[i]>0) str[i]+='0';
break;
}
if(buf>=10)
{
str[i]=buf%10+'0';
str[i+1]++;
}
else {
str[i]=buf+'0';
}
}
n=0;
m=strlen(str)-1;
while (n<m) {
str[n]=str[n]^str[m];
str[m]=str[n]^str[m];
str[n]=str[n]^str[m];
n++;
m--;
}
return str;
}
