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