8. 字符串转整数 (atoi)

题目

代码

class Solution {
public:
    int myAtoi(string str)
    {
        int res=0,sign=1;

        int i=str.find_first_not_of(' ');

        if(str[i]=='+'||str[i]=='-')

        sign=str[i++]=='+'?1:-1;
        int base=INT_MAX/10;

        while(isdigit(str[i]))
        {
            if(res>base||(res==base&&(str[i]-'0')>7))
                return sign==1?INT_MAX:INT_MIN;
          
            res=res*10+str[i++]-'0';
            
        }
        return sign*res;
    }
};

思路

先找出是否有符号,如果有则判断是正数还是负数,然后每次加上一位数字之前需要判断是否会导致溢出,如果溢出则直接返回整数最大值或者最小值。

https://github.com/li-zheng-hao
原文地址:https://www.cnblogs.com/lizhenghao126/p/11053640.html