添加存储在字符串变量中的数字

Hum*_*ons 0 java algorithm

给定两个非负数num1和num2表示为字符串,返回num1和num2之和.

num1和num2的长度均小于5100.

num1和num2都只包含数字0-9.

num1和num2都不包含任何前导零.

您不得使用任何内置BigInteger库或直接将输入转换为整数.

我尝试了我的解决方案,但它不起作用.建议?

public class Solution {
    public String addStrings(String num1, String num2) {
        double multiplier = Math.pow(10, num1.length() - 1);
        int sum = 0;

        for (int i = 0; i < num1.length(); i++){
            sum += ((((int) num1.charAt(i)) - 48) * multiplier);
            multiplier /= 10;
        }

        multiplier = Math.pow(10, num2.length() - 1);

        for (int i = 0; i < num2.length(); i++){
            sum += ((((int) num2.charAt(i)) - 48) * multiplier);
            multiplier /= 10;
        }

        return "" + sum;
    }    
}
Run Code Online (Sandbox Code Playgroud)

And*_*eas 5

您不得使用任何内置BigInteger库或直接将输入转换为整数.

请注意,您要添加两个最多5100位的整数.这是不是最高,但最大位数.

一个int(你的sum变量)不能持有这样的价值观.BigInteger可以,但你不能使用它.

因此,像在纸上一样添加数字:添加最后一位数字,将总和的低位数字写为结果的最后一位,并在需要时结转一位数字.重复倒数第二位,倒数第三位等,直至完成.

由于总和至少是最长输入值的位数,并且可能长一个,因此您应该分配一char[]长度的最长输入加一.完成后,String(char[] value, int offset, int count)根据需要使用偏移量为0或1的方法构造最终字符串.