实现将字符串转换成整数的功能。
1.str[i] - '0' 将对应位置的字符转换成整数
2.str[i] >= '0' && str[i] <= '9' 判断是否整数
3.进入每一个步骤首先判断是否越界
4.完成该步判断后,i++保证循环继续进行
具体步骤:
1.首先跳过前面所有空格
2.判断是否有符号的标识,有符号的标识就保存起来
3.进入计数步骤(如果发现有字符,直接跳出),在计数之前,先判断下一步是否会溢出,判断的方法为
if( base > INT_MAX / 10 || (base == INT_MAX / 10 && str[i] - '0' > 7 ) )
class Solution { public: int myAtoi(string str) { if(str.empty()) return 0; int base = 0, i = 0, sign = 1, n = str.size(); while(i < n && str[i] == ' ') i++; if(i < n && (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 = base * 10 + (str[i++] - '0'); } return sign * base; } };