1. 程式人生 > >Leetcode-08字串轉換整數 (atoi)

Leetcode-08字串轉換整數 (atoi)

C++程式碼和C程式碼差不多,上C++程式碼

推薦一個網頁https://www.cnblogs.com/grandyang/p/4606334.html


class Solution {
public:
    int myAtoi(string str) {
        if (str.empty()) return 0;
        int sign = 1, base = 0, i = 0, n = str.size();
        while (i < n && str[i] == ' ') ++i;
        if (str[i] == '+' || str[i] == '-') {
            sign = (str[i++] == '+') ? 1 : -1;
        }
        while (i < n && str[i] >= '0' && str[i] <= '9') {
            if (base > INT_MAX / 10 || (base == INT_MAX / 10 && str[i] - '0' > 7)) {
                return (sign == 1) ? INT_MAX : INT_MIN;
            }
            base = 10 * base + (str[i++] - '0');
        }
        return base * sign;
    }
};

C語音標準庫中有INT_MAX和INT_MIN,我開始重定義的時候沒加標準庫,然後沒用移位,用了pow這個函式,這是浮點型函式。導致C程式提交不通過。還要繼續加油。