牛客网编程高频题20——NC1大数加法

目录

大数加法

描述

示例1

输入:

返回值:

说明:

方法:尾部相加

注意


 

 

大数加法

描述

以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。

(字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成)

示例1

输入:

"1","99"

返回值:

"100"

说明:

1+99=100 

 

 

方法:尾部相加

将低位依次相加,存储进位的信息

import java.util.*;

public class Solution {
    public String solve (String s, String t) {
        // write code here
        StringBuffer res=new StringBuffer();
        int i=s.length()-1,j=t.length()-1,carry=0,sum=0;
        while(i>=0||j>=0||carry!=0){
            int n1=i<0?0:s.charAt(i--)-'0';
            int n2=j<0?0:t.charAt(j--)-'0';
            sum=(n1+n2+carry)%10;
            carry=(n1+n2+carry)/10;
            res.append(sum);
        }
        return res.reverse().toString();
    }
}

下面是运行的结果:

 

注意

这个题结果必须保存到 StringBuffer 或者 StringBuilder 中,最后转换为字符串,要不然时间就会超时,

因为在进行字符串拼接的时候,StringBuffer 或者 StringBuilder 要远比 String 的效率要高,因为 String 在执行字符串拼接的时候底层代码是创建 StringBuilder 对象然后调用 append 方法,

String str = "hello,world!";
String result = "";

result=result+str;

//底层代码
result = new StringBuilder(result).append(str).toString();

这样就导致每次拼接的时候都要 new 一个 StringBuilder 对象,并且还要将result的字符复制到新创建的 StringBuilder 对象中,当拼接的次数多了之后,时间效率自然就下来了,

而创建 StringBuilde r对象直接 append 拼接字符,就只用创建一次对象,后面都是调用 append 方法,时间消耗远远比直接字符串拼接要少,

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值