atoi

Hint:

Notes:

Update (2015-02-10):

The signature of the ​​C++​​ function had been updated. If you still see your function signature accepts a ​​const char *​​ argument, please click the reload button 

注意5点。

1.空字符串

2.字符串前的空格

3.+-号

4.非法字符(这里返回非法字符前的有效位)

5.溢出(这里如果大于最大,返回最大;小于最小返回最小)


class Solution {
public:
int myAtoi(string str) {
int len = str.size();
if (len == 0) return 0;

long long sum = 0;
int i = 0;
while (str[i] == ' ') i++;

int minus = 1;
if (str[i] == '-'){
minus = -1;
i++;
}
else if (str[i] == '+'){
i++;
}

for (; i < len; i++){
if (str[i]<'0' || str[i]>'9'){
break;
}
sum = sum*10 + (str[i] - '0')*minus;
if (sum>INT_MAX){
return INT_MAX;
}
else if (sum < INT_MIN){
return INT_MIN;
}
}
return sum;
}
};