問題鏈接
LeetCode 8. String to Integer (atoi)
題目解析
字符串轉換成數字。
解題思路
個人認為題目并沒有完全講清楚題意。最初以為需要考慮多種情況,小數啊指數啊什么的,后面發現不是這樣的,這題只要關注字符數字問題以及范圍問題。
1.跳過空格字符;
2.判斷正負號;
3.判斷數字,順便判斷范圍。
注意正負號和數字要連續,不能斷;數字之后再出現非數字字符,直接返回,后面的字符補在理會。
參考代碼
class Solution {
public:int myAtoi(string str) {if (str.empty()) return 0;int sign = 1, i = 0, len = str.size();int res = 0;while (i < len && str[i] == ' ') i++;if (str[i] == '+' || str[i] == '-')sign = (str[i++]=='+' ? 1 : -1);while (i < len && str[i] >= '0' && str[i] <= '9') {if (res > INT_MAX/10 || (res == INT_MAX/10 && str[i] >= '8'))return sign==1 ? INT_MAX : INT_MIN;res = res*10 + (str[i]-'0');i++;}return sign * res;}
};
LeetCode All in One題解匯總(持續更新中...)
本文版權歸作者AlvinZH和博客園所有,歡迎轉載和商用,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.