题解 | #大数加法#

大数加法

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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务