0%

8. 字符串转换整数 (atoi)

8. 字符串转换整数 (atoi)

参考剑指 Offer 67. 把字符串转换成整数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Solution {
public:
int myAtoi(string s) {
if(s.empty())
return 0;
bool positive = true;
int i = 0;
while(s[i] == ' ')
++i;
if(!isdigit(s[i]))
{
if(s[i] == '+' || s[i] == '-')
positive = s[i++] == '+';
else
return 0;
}
int length = s.size();
int ret = 0;
while(i < length)
{
if(!isdigit(s[i]))
break;
int num = s[i] - '0';
if(ret > INT_MAX / 10 || (ret == INT_MAX / 10 && num > INT_MAX % 10))
return positive ? INT_MAX : INT_MIN;
ret = ret * 10 + num;
++i;
}
return positive ? ret : -ret;
}
};