1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
int myAtoi(string s) {
int res = 0, sign = 1, i = 0, n = s.size();
while(s[i] == ' ') i ++; //处理空格
if(s[i] == '-'){ //处理符号
sign = -1;
i ++;
}
else if(s[i] == '+') i ++;

while(i < n && isdigit(s[i])){ //处理数字
if(res > INT_MAX / 10 || res == INT_MAX / 10 && (s[i] - '0' > 7)){ //即将溢出
return sign == 1 ? INT_MAX : INT_MIN;
}
res = res * 10 + (s[i] - '0');
i++;
}
return res * sign;
}
};