最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中超過long范圍的超大整數(shù)相加算法詳解(面試高頻)

 更新時間:2020年08月21日 10:21:21   作者:大樹91  
這篇文章主要介紹了java中超過long范圍的超大整數(shù)相加算法(面試高頻),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

java里有數(shù)字long來表示大的整數(shù),如果兩個數(shù)字的范圍超過了long,要做加法算法怎么做呢?
這個問題在面試中經(jīng)常碰到,如果之前沒有經(jīng)歷的,可能一時有點想不起來怎么做。
下面我們來分析一下,兩個數(shù)字超過了long的范圍,那顯然不能用java中的基本數(shù)字類型來計算了。
我們可以想小時候剛學(xué)習(xí)加法的豎式運算,個位對個位,十位對十位,百位對百位、、、以此類推。當(dāng)個位滿十向十位進1,十位滿十向百位進1、、、以此類推,就這樣完成了運算。
表示出來如下:

   1 4 5
  + 2 6 9
-------------
    4 1 4 

受此啟發(fā)我們可以做這道題了,數(shù)字如果超過了long的范圍那顯然在java里是以String類型呈現(xiàn)的,下面我們上代碼。

package com.wandou.demo.algorithm.post;

import org.junit.Test;

/**
 * @author liming
 * @date 2020-08-19
 * @description 算法
 */
public class BigNumAddDemo {

  @Test
  public void bigintegerAddTest() {
    System.out.println("Long.MAX_VALUE = " + Long.MAX_VALUE);
    bigNumAdd("111", "2010");
    bigNumAdd(Long.MAX_VALUE + "", Long.MAX_VALUE + "");
    bigNumAdd(Long.MAX_VALUE + "", "10");
  }

  public void bigNumAdd(String strNum1, String strNum2) {
    char[] chars1 = strNum1.toCharArray();
    char[] chars2 = strNum2.toCharArray();
    int len1 = chars1.length;
    int len2 = chars2.length;
    boolean oneBiger = len1 > len2;
    int len = Integer.max(len1, len2);
    StringBuilder targetSb = new StringBuilder();
    //進位
    int carry = 0;
    for (int i = 0; i < len; i++) {
      int temp;
      int idx1 = len1 - 1 - i;
      int idx2 = len2 - 1 - i;
      if (oneBiger) {
        if (i < len2) {
          temp = Integer.parseInt(chars1[idx1] + "") + Integer.parseInt(chars2[idx2] + "") + carry;
        } else {
          temp = Integer.parseInt(chars1[idx1] + "") + carry;
        }
      } else {
        if (i < len1) {
          temp = Integer.parseInt(chars1[idx1] + "") + Integer.parseInt(chars2[idx2] + "") + carry;
        } else {
          temp = Integer.parseInt(chars2[idx2] + "") + carry;
        }
      }
      carry = 0;
      if (temp > 9) {
        carry = 1;
        targetSb.append(temp - 10);
      } else {
        targetSb.append(temp);
      }
    }
    System.out.println(targetSb.reverse().toString());
  }

}

測試結(jié)果:

測試結(jié)果

總結(jié)

到此這篇關(guān)于java中超過long范圍的超大整數(shù)相加算法(面試高頻)的文章就介紹到這了,更多相關(guān)java超過long超大整數(shù)相加算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java常用類String的面試題匯總(java面試題)

    Java常用類String的面試題匯總(java面試題)

    這篇文章主要介紹了Java常用類String的面試題匯總,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-06-06
  • MyBatis使用自定義TypeHandler轉(zhuǎn)換類型的實現(xiàn)方法

    MyBatis使用自定義TypeHandler轉(zhuǎn)換類型的實現(xiàn)方法

    這篇文章主要介紹了MyBatis使用自定義TypeHandler轉(zhuǎn)換類型的實現(xiàn)方法,本文介紹使用TypeHandler 實現(xiàn)日期類型的轉(zhuǎn)換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Spring中Controller和RestController的區(qū)別詳解

    Spring中Controller和RestController的區(qū)別詳解

    這篇文章主要介紹了Spring中Controller和RestController的區(qū)別詳解,@Controller是標(biāo)識一個Spring類是Spring MVC controller處理器,@Controller類中的方法可以直接通過返回String跳轉(zhuǎn)到j(luò)sp、ftl、html等模版頁面,需要的朋友可以參考下
    2023-09-09
  • java 注解默認(rèn)值操作

    java 注解默認(rèn)值操作

    這篇文章主要介紹了java 注解默認(rèn)值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • java Wrapper類基本用法詳解

    java Wrapper類基本用法詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于java Wrapper類基本用法詳解,有興趣的朋友們可以參考下。
    2021-01-01
  • SpringBoot集成MQTT實現(xiàn)交互服務(wù)通信

    SpringBoot集成MQTT實現(xiàn)交互服務(wù)通信

    MQTT非常適用于物聯(lián)網(wǎng)領(lǐng)域,本文主要介紹了SpringBoot集成MQTT實現(xiàn)交互服務(wù)通信,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • SpringBoot返回多種格式的數(shù)據(jù)的實現(xiàn)示例

    SpringBoot返回多種格式的數(shù)據(jù)的實現(xiàn)示例

    本文主要介紹了SpringBoot返回多種格式的數(shù)據(jù)的實現(xiàn)示例,主要包括了FastJson,xml,pdf,excel,資源流,具有一定的參考價值,感興趣的可以了解一下
    2021-10-10
  • 解決mybatis-plus通用mapper調(diào)用報錯:Invalid bound statement

    解決mybatis-plus通用mapper調(diào)用報錯:Invalid bound statement

    這篇文章主要介紹了解決mybatis-plus通用mapper調(diào)用報錯:Invalid bound statement的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot框架搭建教程分享

    SpringBoot框架搭建教程分享

    這篇文章主要為大家詳細(xì)介紹了SpringBoot框架搭建教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 部署Java在服務(wù)器端的EJB組件的方法

    部署Java在服務(wù)器端的EJB組件的方法

    這篇文章主要介紹了部署Java在服務(wù)器端的EJB組件的方法,同時給出了簡單的客戶端調(diào)用方法,需要的朋友可以參考下
    2015-11-11

最新評論

沧州市| 赣州市| 翁源县| 河池市| 侯马市| 霸州市| 科尔| 盖州市| 报价| 华坪县| 锡林郭勒盟| 梓潼县| 色达县| 保德县| 阳东县| 油尖旺区| 武山县| 昆明市| 博野县| 安龙县| 海淀区| 厦门市| 横山县| 临清市| 乐业县| 巴青县| 乌苏市| 教育| 穆棱市| 常山县| 博兴县| 双峰县| 尉氏县| 芦溪县| 高邮市| 东至县| 海安县| 林西县| 安平县| 禹州市| 余姚市|