LeetCode 415. Add Strings

415. Add Strings

Description

Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2.

Note:
1. The length of both num1 and num2 is 

Solution

  • 题意即将两个字符串形式的数字相加,其实就是高精度加法。
  • 可以模拟竖式来进行字符串相加,实现方式多种多样,下面的代码虽然AC了,但是临时写成,多处凌乱,建议去搜索专门的高精度算法来研究学习。
void r(char *s)
{
    int len = strlen(s);
    char cp[len + 1];
    for (int i = 0;i < len;i++) 
        cp[i] = s[len - i - 1];
    memcpy(s,cp,len);
}
char rnt[6000];
char* addStrings(char* num1, char* num2) {
    int len1 = strlen(num1),len2 = strlen(num2);
    int len = len1>len2?len1:len2;
    memset(rnt,0,sizeof(rnt));
    r(num1);r(num2);
    for (int i = 0;i < len;i++)
        rnt[i] = '0';
    for (int i = 0;i < len;i++) {
        int a,b,c;
        if (i < len1)
            a = num1[i] - '0';
        else
            a = 0;
        if (i < len2)
            b = num2[i] - '0';
        else
            b = 0;
        if (a + b > 9 || (a + b == 9 && rnt[i] == '1')) rnt[i + 1] = '1';
        if (a + b == 9 && rnt[i] == '1')
            rnt[i] = '0';
        else
            rnt[i] += (a + b) % 10;
    }
    r(rnt);
    return rnt;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值