題目描述:
寫乙個函式 strtoint,實現把字串轉換成整數這個功能。不能使用 atoi 或者其他類似的庫函式。思路分析:說明:
假設我們的環境只能儲存 32 位大小的有符號整數,那麼其數值範圍為 [−231, 231 − 1]。如果數值超過這個範圍,請返回 int_max (231 − 1) 或 int_min (−231) 。
去掉字串左邊的空格,然後從頭往後遍歷,如果第一位為+或者-,往後遍歷,如果遇到非數字,結束迴圈,如果是數字,將數字記錄下來。
注意:本題難點在於如何處理溢位問題。
int範圍為:-2^31 ~2^31-1,即 -2147483648 ~2147483647,如果用int型別的數字num判斷肯定會出錯,因為超過int型別大小的數字由於溢位,溢位後的值肯定小於最大值,導致沒法判斷。這裡可以通過判斷數字num和integer.max_value / 10的值來確定是否溢位。
public
intstrtoint
(string str)
return flag * res;
}
這道題牛客和力扣稍微有些區別:
力扣:數字後面帶字母也可以轉化成功。例如:- 123a,轉化後為:-123;
牛客:數字後面帶字母轉化失敗,直接返回0。例如:-123a,轉化後為:0;
劍指offer之把字串轉換成整數
將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入描述 輸入乙個字串,包括數字字母符號,可以為空 輸出描述 如果是合法的數值表達則返回該數字,否則返回0 示例1 輸入 2147483647 1a33 輸出 2147483647 0考慮輸入的字...
劍指offer之 把字串轉換成整數
將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 由於字串可能首位帶 或 則需要先判斷首位是否為 數字或其他字元,若為其他字元,則return 0,否則分為3類,並移除標誌位 其次對字串求和,需要注意的是最終返回的是int,int是有界的,為了防...
劍指offer 把字串轉換成整數
字串轉成整數的核心 很簡單,但是需要考慮的各種情況很多。1 首位 的判斷。2 在 的溢位判斷。3 null 空字串的判斷。4 數字後面出現了很多非數字的情況。atoi函式是講前面的數字儲存下來,劍指offer 的 則是返回0。兩種情況都說的通,視情況而定吧。5 開頭出現了很多非數字,中間摻雜著數字的...