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();



    }
}

你可能感兴趣的:(leetcode-java)