美文网首页算法提高之LeetCode刷题
Leetcode之415-字符串相加(Add Strings)

Leetcode之415-字符串相加(Add Strings)

作者: 北京程序猿 | 来源:发表于2019-03-30 07:15 被阅读1次

    前言

    个人网站

    公众号: 北京程序猿, 网站 : https://yaml.vip

    算法题

    题干

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

    说明

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

    Java代码

    public String addStrings(String num1, String num2) {
        final int oneLen = num1.length(), twoLen = num2.length();
        int oneCursor = oneLen - 1, twoCursor = twoLen - 1;
        int carry = 0;
        StringBuilder data = new StringBuilder(Math.max(oneLen, twoLen) + 1);
        while (oneCursor >= 0 || twoCursor >= 0) {
            int val1 = oneCursor >= 0 ? num1.charAt(oneCursor--) - '0' : 0;
            int val2 = twoCursor >= 0 ? num2.charAt(twoCursor--) - '0' : 0;
            data.append((val1 + val2 + carry) % 10);
            carry = (val1 + val2 + carry) / 10;
        }
        if (carry != 0) {
            data.append(carry);
        }
        return data.reverse().toString().trim();
    }
    

    总结

    1. 题太简单, 提交直接通过。
    2. 二进制求和太相似。
    3. 这种类似的题目, 可以将进制数通过参数进行传递, 不管是几进制求和, 都没问题, 代码可参考如下。
    public String addStrings(String num1, String num2, int radix) {
        final int oneLen = num1.length(), twoLen = num2.length();
        int oneCursor = oneLen - 1, twoCursor = twoLen - 1;
        int carry = 0;
        StringBuilder data = new StringBuilder(Math.max(oneLen, twoLen) + 1);
        while (oneCursor >= 0 || twoCursor >= 0) {
            int val1 = oneCursor >= 0 ? num1.charAt(oneCursor--) - '0' : 0;
            int val2 = twoCursor >= 0 ? num2.charAt(twoCursor--) - '0' : 0;
            data.append((val1 + val2 + carry) % radix);
            carry = (val1 + val2 + carry) / radix;
        }
        if (carry != 0) {
            data.append(carry);
        }
        return data.reverse().toString().trim();
    }
    

    本文著作权归作者所有。

    商业转载请联系作者获得授权,非商业转载请于文首标明作者姓名,保持文章完整性,并附上出处和文章链接!未按规范转载者,作者保留追究相应责任的权利!

    作者:北京程序猿

    链接:字符串相加

    相关文章

      网友评论

        本文标题:Leetcode之415-字符串相加(Add Strings)

        本文链接:https://www.haomeiwen.com/subject/uladbqtx.html