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

Go語言處理超大字符串型整數(shù)加減經(jīng)典面試詳解

 更新時間:2023年10月13日 09:06:43   作者:好文收藏  
這篇文章主要為大家介紹了Go語言處理超大字符串型整數(shù)加減經(jīng)典面試示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

int范圍

int64所能表示的數(shù)字范圍為$-2^{63} 到 2^{63}-1$,即·-9223372036854775808~9223372036854775807·,
(19位長度)

當(dāng)超過這一數(shù)字,則會溢出

fmt.Println(9223372036854775808)

執(zhí)行結(jié)果:

constant 9223372036854775808 overflows int

但當(dāng)有相關(guān)需求,如假設(shè)π小數(shù)點(diǎn)后50位乘以$10^{50}$的值為a1,
e小數(shù)點(diǎn)后30位乘以$10^{30}$的值為a2,現(xiàn)需要計算a1+a2,以及a1-a2的值;

即對兩個可正可負(fù)的字符串型整數(shù)str1和str2,計算str1+str2的值

1.當(dāng)兩數(shù)皆為正整數(shù)

如a1+a2

一些必要操作,如去除最左邊的所有0,在代碼中不做展現(xiàn),

默認(rèn)已通過strings.TrimLeft(str,"0")處理為不是以0開頭的正整數(shù)

func main(){
    str1 := "314159265358979323846264338327950288419716939937510"
    str2 :=                     "2718281828459045235360287471352"
    rs := ""
    if len(str1) > len(str2) {
        rs = AddStr(str1,str2)
    }  else{
        rs = AddStr(str2,str1)
    }
    fmt.Println(rs)
}
func AddStr(n1,n2 string)(res string) {
    var num []int
    x,y := len(n1),len(n2)
    num = make([]int,x+1) //因為可能存在兩個數(shù)的最高位相加大于10的情況,故而比兩者中最大數(shù)的位數(shù)+1
    for i :=0;i<y; {
        num[x-i] = int(n1[x-1-i]-'0') + int(n2[y-1-i]-'0')
        i = i + 1
    }
    for i:=0;i<x-y;{
        num[x-y-i] = int(n1[x-y-i-1]-'0')
        i = i + 1
    }
    //處理進(jìn)位
    for i := len(num);i>1;{
        if num[i-1]/10==1 {
            num[i-1]-=10
            num[i-2]++
        }
        i = i - 1
    }
    //匯總字符串結(jié)果
    for _,i := range num{
        s:=strconv.Itoa(i)
        res+=s
    }
    //去除開頭可能存在的0
    if len(res) > 1 {
        res = strings.TrimLeft(res,"0")
    }
    return
}

運(yùn)行結(jié)果:

314159265358979323848982620156409333655077227408862

2.當(dāng)兩數(shù)可能為負(fù)整數(shù)

即a1-a2,或a2-a1,或-a1-a2

當(dāng)兩數(shù)皆為負(fù)數(shù),先把負(fù)號取出,這樣就和兩個正整數(shù)相加無異,

最后得出結(jié)果再加上負(fù)號~

當(dāng)兩數(shù)一正一負(fù),

如下代碼,默認(rèn)已做如下處理,a1為正,a2為負(fù),且a1的絕對值>a2的絕對值

func main(){
    str1 := "314159265358979323846264338327950288419716939937510"
    str2 :=                    "-2718281828459045235360287471352"
    str2 = strings.TrimLeft(str2,"-")
    res := subtractStr(str1,str2)
    fmt.Println(res)
}
func subtractStr(n1,n2 string)(res string) {
  var num []int
  x,y := len(n1),len(n2)
  num= make([]int,x+1)
  for i := 0;i < y; {
      num[x-i] = int(n1[x-1-i]-'0') - int(n2[y-1-i]-'0')
      i = i + 1
  }
  for i:=0;i<x-y;{
      num[x-y-i] = int(n1[x-y-i-1]-'0')
      i = i + 1
  }
  //處理進(jìn)位
  for i := len(num);i>1;{
      if num[i-1] < 0  {
          num[i-1]+=10
          num[i-2]--
      }
      i = i- 1
  }
  //匯總字符串結(jié)果
  for _,i := range num{
      s:=strconv.Itoa(i)
      res+=s
  }
  //去除開頭可能存在的0
  if len(res) > 1 {
      res = strings.TrimLeft(res,"0")
  }
  return
}

運(yùn)行結(jié)果:

314159265358979323843546056499491243184356652466158

思考:

當(dāng)str1,str2未必為整數(shù)型字符串,而可能是小數(shù)型時,該如何處理?

以及超大字符串型整數(shù)的乘除問題,如何處理

以上就是Go語言處理超大字符串型整數(shù)加減經(jīng)典面試詳解的詳細(xì)內(nèi)容,更多關(guān)于Go處理超大字符串型整數(shù)加減的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決golang http.FileServer 遇到的坑

    解決golang http.FileServer 遇到的坑

    這篇文章主要介紹了解決golang http.FileServer 遇到的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 詳解Gotorch多機(jī)定時任務(wù)管理系統(tǒng)

    詳解Gotorch多機(jī)定時任務(wù)管理系統(tǒng)

    遵循著“學(xué)一門語言最好的方式是使用它”的理念,想著用Go來實現(xiàn)些什么,剛好有一個比較讓我煩惱的問題,于是用Go解決一下,即使不在生產(chǎn)環(huán)境使用,也可以作為Go語言學(xué)習(xí)的一種方式。
    2021-05-05
  • goroutine?泄漏和避免泄漏實戰(zhàn)示例

    goroutine?泄漏和避免泄漏實戰(zhàn)示例

    這篇文章主要為大家介紹了goroutine?泄漏和避免泄漏實戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • golang利用pprof與go-torch如何做性能分析

    golang利用pprof與go-torch如何做性能分析

    這篇文章主要給大家介紹了關(guān)于golang利用pprof與go-torch如何做性能分析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • golang中實現(xiàn)給gif、png、jpeg圖片添加文字水印

    golang中實現(xiàn)給gif、png、jpeg圖片添加文字水印

    這篇文章主要介紹了golang中實現(xiàn)給gif、png、jpeg圖片添加文字水印,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Go設(shè)計模式之單例模式圖文詳解

    Go設(shè)計模式之單例模式圖文詳解

    單例模式是一種創(chuàng)建型設(shè)計模式,讓你能夠保證一個類只有一個實例,并提供一個訪問該實例的全局節(jié)點(diǎn),本文就通過圖文給大家介紹一下Go的單例模式,需要的朋友可以參考下
    2023-07-07
  • Go語言解決大模型API調(diào)用中的超時錯誤的方法

    Go語言解決大模型API調(diào)用中的超時錯誤的方法

    在開發(fā)基于大語言模型(如DeepSeek)的智能應(yīng)用時,我們常通過API實現(xiàn)自然語言交互,但在處理復(fù)雜任務(wù)或網(wǎng)絡(luò)波動時,開發(fā)者可能會遭遇 context deadline exceeded錯誤,本文將以Go語言為例,深入分析該問題的根源,并提供一套完整的優(yōu)化方案,需要的朋友可以參考下
    2025-05-05
  • GO 使用Webhook 實現(xiàn)github 自動化部署的方法

    GO 使用Webhook 實現(xiàn)github 自動化部署的方法

    這篇文章主要介紹了GO 使用Webhook 實現(xiàn)github 自動化部署的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Go語言開發(fā)編程規(guī)范命令風(fēng)格代碼格式

    Go語言開發(fā)編程規(guī)范命令風(fēng)格代碼格式

    這篇文章主要為大家介紹了Go語言開發(fā)編程規(guī)范命令風(fēng)格代碼格式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • golang使用iconv報undefined:XXX的問題處理方案

    golang使用iconv報undefined:XXX的問題處理方案

    這篇文章主要介紹了golang使用iconv報undefined:XXX的問題處理方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論

平潭县| 石屏县| 永川市| 庆阳市| 合水县| 杭州市| 巴中市| 仙游县| 华坪县| 新野县| 宁南县| 迁西县| 嘉定区| 清流县| 胶州市| 中卫市| 平顺县| 望都县| 禹城市| 德江县| 昌吉市| 离岛区| 昭觉县| 通海县| 永泰县| 卓资县| 永吉县| 天津市| 丁青县| 永胜县| 明溪县| 深水埗区| 中卫市| 曲水县| 东阳市| 子洲县| 石门县| 临漳县| 诸城市| 靖远县| 响水县|