题解 | #大数加法#
大数加法
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; }