前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode-415. 字符串相加

leetcode-415. 字符串相加

作者头像
灰太狼学Java
发布2022-06-17 11:10:19
5140
发布2022-06-17 11:10:19
举报
文章被收录于专栏:Java学习驿站

JAVA解法

代码语言:javascript
复制
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. 字符串相加

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JAVA解法
  • 题解分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档