题解 | #大数加法#

大数加法

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;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
10-05 10:13
已编辑
HHHHaos:让这些老登来现在秋招一下,简历都过不去
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务