首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

LeetCode String to Integer (atoi):字串轉整數完整實現

     編輯:關於C++

題目要求

實現 atoi:忽略前導空格,可選正負號,盡可能讀取數字,非數字字符停止解析。溢出返回 INT_MAX (2147483647) 或 INT_MIN (-2147483648)。無效輸入返回 0。

邊界處理

  1. 跳過空格。
  2. 讀取符號(+/-)。
  3. 逐字符累積數值,檢查溢出:num > INT_MAX/10 或 num == INT_MAX/10 且 digit > INT_MAX%10。
  4. 遇非數字中斷。

C++ 實現


class Solution {
public:
    int atoi(const char* str) {
        int num = 0, sign = 1;
        const int n = strlen(str);
        int i = 0;
        while (i < n && str[i] == ' ') ++i;
        if (i < n && str[i] == '+') ++i;
        else if (i < n && str[i] == '-') { sign = -1; ++i; }
        for (; i < n; ++i) {
            if (str[i] < '0' || str[i] > '9') break;
            if (num > INT_MAX/10 || (num == INT_MAX/10 && (str[i]-'0') > INT_MAX%10))
                return sign == -1 ? INT_MIN : INT_MAX;
            num = num * 10 + (str[i] - '0');
        }
        return num * sign;
    }
};

面試重點

  • 完整邊界覆蓋:空串、純空格、符號後非數字、溢出正負非對稱(INT_MIN 絕對值大 1)。
  • 對應 itoa(整數轉字串)常考。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved