leecode 8 字串轉換整數 atoi

2021-09-05 10:09:07 字數 1000 閱讀 7515

tag儲存的是數的符號,無符號長長整型的 res 用來暫時儲存字串裡的資料(不含符號位)

思路比較簡單:空格都pass掉以後,如果第乙個字元不是數字,返回0;

否則,這一位如果是符號,把符號存到tag,從下一位開始取數,如果沒有符號位,直接開始取數;

數取完了以後(有兩種情況,①後面又出現了字母 ②字串結束了),內迴圈和外迴圈都要break,所以設定乙個flag位,當內迴圈break了 立馬外迴圈也break;

還有乙個問題值得說明:

如果把判斷溢位並返回的語句(見下方**)放到整個函式的最後執行,那麼可能字串的數字(如"18446744073709551617")已經超過了unsigned long long的表示範圍;

這個時候 硬要把他存到res裡,就會發生溢位範圍的問題,得到預期之外的結果("18446744073709551617"存到res裡,其實會變成1,最終返回1);

把unsigned 去掉,用long long,那麼超過long long的最大正數後,存進去的數會變成負數,這都可能帶來錯誤的結果;

同時,考慮到乙個數溢位了int的範圍以後,並不會馬上就溢位 long long,即從int_max到long long_max,還有很大的中間地帶;

所以我們把判斷溢位並返回的語句 放到了「res = res * 10 + int(str[j]) - 48;」以後;

**:

class

solution

while

(j < str.

size()

) j++;if

(j == str.

size()

) flag =1;

}else}}

if(flag)

break;}

if(tag ==

'-') res =

-int

(res)

;return

(int

)res;}}

;

8 字串轉換整數 python

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

8 字串轉換整數 atoi

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

8 字串轉換整數(atoi)

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