【面试题】Java 2个(多个)大整数相加如何实现

简介: 【面试题】Java 2个(多个)大整数相加如何实现

之前面试阿里的时候,第四面的时候面试官让我当他面实现这个题目, 一开始的时候问的时候 2个相加如何实现,然后我写完了之后又问我如果是多个相加呢?面试官希望我能在实现的时候能够考虑到各种可能性,比如多个数相加,然后等我写完了之后,又问我有没有更好的实现方法;以下是我的实现方法;

1将待相加的数以字符串的形式进行相加

简单思路就是  多个字符串的每一位进行相加,如果有进位 ,则让进位也一起相加; String a = "123456789" String b = "123" 这种情况就要让b变成 String b = "000000123" 与a的每一位进行相加


show the code

/**
* Created by shirenchuang on 2018/6/28.
*/

publicclassBigDataAddUtils {
   publicstatic String add(String... params){
       int maxLeng = 0;
       //获取最大长度
       for(String s :params){
           if(s.length()>maxLeng)maxLeng=s.length();
       }

       StringBuffer result = new StringBuffer();
       //进位 数
       int high= 0;
       //将每个待加参数每一位相加 进位
       for (int i = 0 ;i<maxLeng;i++){
           int charInt = 0;
           for(String s :params){
               //高位不够用0代替
               charInt += s.length()-1<i?0: Integer.parseInt(s.charAt(s.length()-1-i)+"");
           }
           charInt+=high;
           //进位
           high = charInt/10;
           //当前位的值 为charInt 余数
           int remainder = charInt%10;
           result.append(remainder);
       }
       //最后一次进位
       if(high>0){
           result.append(high);
       }
       //反转 输出结果
       return result.reverse().toString();
   }

   publicstaticvoidmain(String[] args) {
       System.out.print(add("10023888888888842340","9133333333319","1912"));
   }
}

写完之后,面试官问我还有没有更好的解法; emmmmm....暂时还没有想到更好的解法,求告知!

相关文章
|
3天前
|
安全 算法 Java
java多线程面试题2019整理
java多线程面试题2019整理
|
10天前
|
SQL Java
java面试题笔试常见选择题大全含答案
java面试题笔试常见选择题大全含答案
|
3天前
|
算法 Java 调度
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
7 0
|
10天前
|
SQL JavaScript Java
java程序员面试题大全含答案(2018--2019)
java程序员面试题大全含答案(2018--2019)
|
10天前
|
设计模式 开发框架 Java
java设计模式面试题大全含答案
java设计模式面试题大全含答案
|
10天前
|
设计模式 SQL JavaScript
java面试宝典全套含答案
java面试宝典全套含答案
|
10天前
|
缓存 安全 Java
Java线程面试题含答案
Java线程面试题含答案
|
3天前
|
负载均衡 NoSQL Dubbo
java分布式面试快问快答
java分布式面试快问快答
11 0
|
3天前
|
XML Java 数据库连接
面试必备!Java核心技术100+面试题
面试必备!Java核心技术100+面试题
|
4天前
|
SQL 网络协议 Java
技术经验分享:Java不会或做错的面试题总结
技术经验分享:Java不会或做错的面试题总结
14 0