侧边栏壁纸
博主头像
阿里灰太狼博主等级

You have to believe in yourself . That's the secret of success.

  • 累计撰写 104 篇文章
  • 累计创建 50 个标签
  • 累计收到 12 条评论

目 录CONTENT

文章目录

leetcode-415. 字符串相加

阿里灰太狼
2022-05-02 / 0 评论 / 1 点赞 / 293 阅读 / 906 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-02,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

415. 字符串相加0
415. 字符串相加1

JAVA解法

class Solution {
    public String addStrings(String num1, String num2) {
        // 获取传进来的两个字符串的长度,且定义一个保存进位的 add 变量
        int i = num1.length() - 1, j = num2.length() - 1, add = 0;
        // 定义结果集
        StringBuffer ans = new StringBuffer();
        // 只要以上三个变量不为任一一个不为 0 都能进入循环
        while (i >= 0 || j >= 0 || add != 0) {
            // num1 长度不为 0 则继续取值
            int x = i >= 0 ? num1.charAt(i) - '0' : 0;
            // num2 长度不为 0 则继续取值
            int y = j >= 0 ? num2.charAt(j) - '0' : 0;
            // 两字符串相加再加上上一步的进位
            int result = x + y + add;
            // 对结果求余作为本次运算的结果
            ans.append(result % 10);
            // 对结果除以 10 获得进位的值
            add = result / 10;
            // 维护两个指针
            i--;
            j--;
        }
        // 最后要记得将答案反转一下
        ans.reverse();
        // 返回最终答案,记得 toString 变成 String 类型
        return ans.toString();
    }
}

题解分析

  这道字符串相加的思路是将其每个字符转换成整型相加得出结果再转换成字符串。首先获取传进来的两个字符串的长度,且定义一个保存进位的 add 变量,定义结果集,只要以上三个变量不为任一一个不为 0 都能进入循环,只要 num1 或者 num2 的长度不为 0 则进行取值。这里的 num1.charAt(i) - '0' 主要是利用字符 ‘0’ 到 ‘9’ 的 ASCII 码值是连续的,让其作差即可得到字符的本身的整型值。
  取完值,两字符串相加再加上上一步的进位,对结果求余作为本次运算的结果,再对结果除以 10 获得进位的值,同步维护两个指针,最后要记得将答案反转一下,因为拼接字符串是从左到右拼接的,但是我们的数是从又到左数值越大的,返回最终答案,记得 toString 变成 String 类型。

leetcode原题:415. 字符串相加

1

评论区