题解 | #大数加法#
大数加法
https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ char* solve(char* s, char* t ) { // write code here int lens = strlen(s); int lent = strlen(t); if(lens < lent) { char* tmp = s; s = t; t = tmp; int temp = lens; lens = lent; lent = temp; } char* a = (char*)malloc(sizeof(char) * (lens + 1)); int i = lens - 1, j = lent - 1, k = 0; int sum = 0, carry = 0; while(j >= 0) { sum = s[i] - '0' + t[j] - '0' + carry; carry = sum / 10; a[k] = sum % 10 + 48; k++; i--; j--; } while(i >= 0) { sum = s[i] - '0' + carry; carry = sum / 10; a[k] = sum % 10 + 48; k++; i--; } if(carry) { a[k] = carry + '0'; k++; } a[k] = '\0'; int left = 0, right = k - 1; while(left < right) { char tmp = a[left]; a[left] = a[right]; a[right] = tmp; left++; right--; } return a; }