leetcode 415. 字符串相加 (大数相加)C语言

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

注意:

num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。

双指针法

较短的字符串高位补0

#define MAX_LEN 5102

char g_result[MAX_LEN];

char* addStrings(char* num1, char* num2)
{
    int strlenNum1 = strlen(num1);
    int strlenNum2 = strlen(num2);
    int len = strlenNum1 > strlenNum2 ? strlenNum1 : strlenNum2;
    g_result[len + 1] = '\0';
    int value;
    int value1;
    int value2;
    int carry = 0;
    while (strlenNum1 != 0 || strlenNum2 != 0) {
        if (strlenNum1 != 0) {
            strlenNum1--;
            value1 = num1[strlenNum1] - '0';
        } else {
            value1 = 0;
        }
        if (strlenNum2 != 0) {
            strlenNum2--;
            value2 = num2[strlenNum2] - '0';
        } else {
            value2 = 0;
        }
        value = value1 + value2 + carry;
        carry = value / 10;
        value %= 10;
        g_result[len] = value + '0';
        len--;
    }
    if (carry == 0) {
        return &(g_result[1]);
    } else {
        g_result[0] = '1';
        return g_result;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值