字串轉換整數 atoi 雙百演算法

2021-10-20 20:59:49 字數 1010 閱讀 5014

雙百演算法

請你來實現乙個 myatoi(string s) 函式,使其能將字串轉換成乙個 32 位有符號整數(類似 c/c++ 中的 atoi 函式)。

函式 myatoi(string s) 的演算法如下:

讀入字串並丟棄無用的前導空格

檢查下乙個字元(假設還未到字元末尾)為正還是負號,讀取該字元(如果有)。 確定最終結果是負數還是正數。 如果兩者都不存在,則假定結果為正。

讀入下乙個字元,直到到達下乙個非數字字元或到達輸入的結尾。字串的其餘部分將被忽略。

將前面步驟讀入的這些數字轉換為整數(即,「123」 -> 123, 「0032」 -> 32)。如果沒有讀入數字,則整數為 0 。必要時更改符號(從步驟 2 開始)。

如果整數數超過 32 位有符號整數範圍 [−231, 231 − 1] ,需要截斷這個整數,使其保持在這個範圍內。具體來說,小於 −231 的整數應該被固定為 −231 ,大於 231 − 1 的整數應該被固定為 231 − 1 。

返回整數作為最終結果。

注意:本題中的空白字元只包括空格字元 』 』 。

除前導空格或數字後的其餘字串外,請勿忽略 任何其他字元。

輸入:s = " -42"

輸出:-42

輸入:s = 「4193 with words」

輸出:4193

func

myatoi

(str string

)int

else

if v ==

'-'&& i ==

0else

if v ==

'+'&& i ==

0else

//監測最大值

if result > math.maxint32

return math.maxint32

}}return sign * result

}

演算法 字串轉換整數 atoi

題目 請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的...

演算法 字串轉換整數 atoi 。

請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。接下來的轉化規則如下 注意 假如該字串中的第乙個非空格字元不是乙個有效整數字元 字串為空或字串僅包含空白字元時,則你的函式不需要進行轉換,即無法進行有效轉換。在任何...

字串轉換整數 atoi

請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字...