没有和标准的程序比较,主要难点是需求不明确,自己想得不充分,溢出的问题原先根本没有考虑。
class Solution {
public:
int atoi(const char *str) {
int result = 0;
int sign = 1;
// trim space
while (*str == ' ') {
++str;
}
// get sign
if (*str == '-') {
sign = -1;
++str;
}
else if (*str == '+') {
++str;
}
while (*str != '\0') {
int num = *str - '0';
if (num >= 0 && num <= 9) {
if (result > INT_MAX / 10) {
return sign > 0 ? INT_MAX : INT_MIN;
}
result *= 10;
result += num;
// overflow
if (result < 0) {
return sign > 0 ? INT_MAX : INT_MIN;
}
}
else {
return result * sign;
}
str++;
}
return result * sign;
}
};