leetcode string to integer

文章目录

tips

  1. 考虑whitespace
  2. 考虑正负符号
  3. 考虑正溢出和负溢出
  4. 考虑不能转化情况,返回0
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
class  {
public:
int myAtoi(string str) {
int n = str.length();
int p = 0;
bool sign = 0;
int res = 0;
//whitespace
while(str[p] == ' ' && p < n) p++;
//'+' and '-'
if(str[p] == '+') {
p++;
}else if(str[p] == '-'){
p++;
sign = 1;
}
//digits
for(; p < n; p++) {
if(str[p] < '0' || str[p] > '9') break;
if(res > INT_MAX / 10 || (res == INT_MAX / 10 && (str[p] - '0') > INT_MAX % 10)) {
return sign == 1 ? INT_MIN : INT_MAX;
}
res = res * 10 + (str[p] - '0');
}
return sign == 1 ? (-1) * res : res;
}
};