如何用 int 类型的数判断自己是否溢出?见程序中是如何判断超出边界的。
class Solution {
public:
int myAtoi(string s) {
int res = 0;
int i = 0;
int flag = 1;
while (s[i] == ' ') i ++ ;
if (s[i] == '-') flag = -1; //判断符号
if (s[i] == '+' || s[i] == '-') i ++ ; //符号只会出现一次,不用放到大循环中
//从这里开始,只要出现非数字字符(包括空格字符)就直接退出循环,输出结果
while (i < s.size() && s[i] >= '0' && s[i] <= '9') //或者用isdigit(s[i])也可以
{
int r = s[i] - '0';
if (res > INT_MAX / 10 || (res == INT_MAX / 10 && r > 7)) //判断是否超出边界
return flag > 0 ? INT_MAX : INT_MIN;
res = res * 10 + r;
i ++ ;
}
return flag * res;
}
};