2023年2月4日 星期六

8. String to Integer (atoi)

解題心得

很多 edge case 需要考慮的一題。

程式碼

class Solution {
public:
    int myAtoi(string s) {
        long double ans = 0;
        int i=0;
        bool isPositive = true;
        while(s[i] == ' ')
            i++; // ignore the leading whitespace
        if(s[i] == '-')
        {
            isPositive = false;
            i++;
        }
        else if(s[i] == '+')
        {
            isPositive = true;
            i++;
        }

        for(; i<s.size(); i++)
        {
            if(s[i] > '9' || s[i] < '0')
                break;
            ans = ans * 10 + s[i] - '0';
        }

        if(!isPositive) ans *= -1;
        if(ans > INT_MAX) return INT_MAX;
        else if(ans < INT_MIN) return INT_MIN;
        return ans;
    }
};

沒有留言:

張貼留言