Leetcode 415. Add Strings 字符串加法 解题报告

1 解题思路

就是用两个String表示的数字,不用库的情况下实现加法。

其实说白了就是高精度加法。。注意进位,注意处理长短不一样的数字,都从末尾开始相加就好,不多解释,看代码

2 原题

Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2.
Note: 
The length of both num1 and num2 is < 5100.
Both num1 and num2 contains only digits 0-9.
Both num1 and num2 does not contain any leading zero.
You must not use any built-in BigInteger library or convert the inputs to integer directly.

3 AC解

public class Solution {
    public String addStrings(String num1, String num2) {
        //交换最大最小的,保证后续
        String longer = num1;
        String shorter = num2;
        if(longer.length() < shorter.length()){
            longer = num2;
            shorter = num1;
        }
        int n=longer.length();
        int m=shorter.length();
        char l[] = longer.toCharArray();
        char s[] = shorter.toCharArray();
        //余数
        int remainder = 0;
        char base = '0';
        //从末尾开始加
        int tmp;
        //从末尾开始加
        StringBuilder res = new StringBuilder();
        while(m --> 0){
            n--;
            tmp = l[n] + s[m] - 2*base + remainder;
            remainder = tmp / 10;
            res.append(tmp % 10);
        }
        //处理长的一边
        while(n--> 0){
            tmp = l[n] - base + remainder;
            remainder = tmp / 10;
            res.append(tmp % 10);
        }
        //处理最后的 进位
        if (remainder !=0 ) res.append(remainder);
        return res.reverse().toString();



    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值