字串轉換整數

2021-10-20 10:46:09 字數 2195 閱讀 1066

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

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

注意:

本題中的空白字元只包括空格字元 』 』 。 除前導空格或數字後的其餘字串外,請勿忽略 任何其他字元。

示例 1:

輸入:s = 「42」

輸出:42

解釋:加粗的字串為已經讀入的字元,插入符號是當前讀取的字元。

第 1 步:「42」(當前沒有讀入字元,因為沒有前導空格)

第 2 步:「42」(當前沒有讀入字元,因為這裡不存在 『-』 或者 『+』)

第 3 步:「42」(讀入 「42」)

解析得到整數 42 。 由於 「42」 在範圍 [-231, 231 - 1] 內,最終結果為 42 。

示例 2:

輸入:s = " -42"

輸出:-42

解釋:第 1 步:" -42"(讀入前導空格,但忽視掉)

第 2 步:" -42"(讀入 『-』 字元,所以結果應該是負數)

第 3 步:" -42"(讀入 「42」)

解析得到整數 -42 。 由於 「-42」 在範圍 [-231, 231 - 1] 內,最終結果為 -42 。

示例 3:

輸入:s = 「4193 with words」

輸出:4193

解釋:第 1 步:「4193 with words」(當前沒有讀入字元,因為沒有前導空格)

第 2 步:「4193 with words」(當前沒有讀入字元,因為這裡不存在 『-』 或者 『+』)

第 3 步:「4193 with words」(讀入 「4193」;由於下乙個字元不是乙個數字,所以讀入停止)

解析得到整數 4193 。 由於 「4193」 在範圍 [-231, 231 - 1] 內,最終結果為 4193 。

示例 4:

輸入:s = 「words and 987」

輸出:0

解釋:第 1 步:「words and 987」(當前沒有讀入字元,因為沒有前導空格)

第 2 步:「words and 987」(當前沒有讀入字元,因為這裡不存在 『-』 或者 『+』)

第 3 步:「words and 987」(由於當前字元 『w』 不是乙個數字,所以讀入停止)

解析得到整數 0 ,因為沒有讀入任何數字。 由於 0 在範圍 [-231, 231 - 1] 內,最終結果為 0 。

示例 5:

輸入:s = 「-91283472332」

輸出:-2147483648

解釋:第 1步:"-91283472332"(當前沒有讀入字元,因為沒有前導空格)

第 2 步:"-91283472332"(讀入 『-』 字元,所以結果應該是負數)

第 3 步:"-91283472332"(讀入 「91283472332」) 解析得到整數 -91283472332 。 由於-91283472332 小於範圍 [-2^31, 2^31 - 1] 的下界,最終結果被截斷為 -2^31 = -2147483648 。

解法

class

solution

else

if(str.

charat

(index)

=='+'

)int sum=0;

while

(indexlength()

)if(sum>integer.max_value/

10||

(sum==integer.max_value/

10&&

(str.

charat

(index)

-'0'

)>integer.max_value%10)

) sum=sum*

10+str.

charat

(index++)-

'0';

}return sign*sum;

}}

字串轉換整數

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

字串轉換整數

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

字串轉換整數

不需要讀入空格,因此無論左邊有多少空格直接跳過,移動str指標到第乙個不是空格的位置上。然後判斷符號位,存在三種情況 和無正負號,當沒有符號的時候不需要任何操作,當是 號時使s 1。設定flag 0 flag作用下面詳細說明 遇到其他字元,break 不是數字的字元遍歷完,逐個將數字字元轉化為整數,...