Leetcode 415. 字符串相加

难度:简单
频率:119
题目:

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

在这里插入图片描述
解题方法:加法算术的模拟过程
解题思路:

  • 1.加法法则,无非是位数相加,满十进一,所以这里需要两个指针指向连个数组,还有一个进位;
  • 2.以此相加,如果位数不够,则补0;
  • 3.每次结果进位加到进位位,剩下的append到结果里。
  • 4.最后把结果相反就行。res

代码

class Solution {
    public String addStrings(String num1, String num2) {
        StringBuilder res=new StringBuilder();
        int i=num1.length()-1;
        int j=num2.length()-1;
        int add=0;
        while(i>=0 ||j>=0 ||add >0)
        {
            int x=i>=0?num1.charAt(i)-'0':0;
            int y=j>=0?num2.charAt(j)-'0':0;
            int sum=x+y+add;
            add=sum/10;
            res.append(sum%10);
            i--;
            j--;
        }
          return res.reverse().toString();
    }

需要注意的地方:
1.尽量用StringBuilder,因为String是static
2.取字符是charAt(i)
3.判断条件里加了进位add的判断后,不需要最后再进行处理,否则最后还要加进位位在最前面。
4.最后需要取反,reverse,然后转字符串。 StringBuilder 最后转String,toString

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值