leetcode字符串转整数(atoi)

class Solution {
public:
    int myAtoi(string str) {
        if(str.empty()) return 0;
        int sign = 1,base = 0,i=0,n = str.size();
        while(i='0'&&str[i]<='9')
        {
            if(base>INT_MAX/10||(base==INT_MAX/10 && str[i]-'0'>7))
                 // if(base>INT_MAX/10||(base==INT_MAX/10 && str[i]-'0'>7))
        // 关于这个判定条件的注释,
        // 因为base每次增长的方式是10的倍数+一个个位数,所以如果base如果大于INT_MAX/10会溢出,
        // 如果base=INT_MAX/10时,取决于个位数,因为INT_MAX=2147483647,所以如果str的最后位数一定要小于7,
        // 否则就会溢出.
            {
                return  (sign==1) ?INT_MAX;INT_MIN;
            }
            base = 10*base+(str[i++]-'0');
        }
        return base *sign;
    }
};

直接贴代码,因为对这边界判断条件理解,特此记录.

你可能感兴趣的:(leetcode字符串转整数(atoi))