Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
class Solution {
public:
int atoi(const char *str) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int flag = 1;
int value = 0;
int number = 0;
bool start = false;
const char* p = str;
while (*p) {
if (*p == '-') {
flag = -1;
++p;
if (*p < '0' || *p > '9') {
return 0;
}
continue;
} else if (*p == '+') {
flag = 1;
++p;
if (*p < '0' || *p > '9') {
return 0;
}
continue;
} else if (*p >= '0' && *p <= '9'){
start = true;
number = *p - '0';
if (value > 214748364) {
if (flag == 1) {
return 2147483647;
} else {
return -2147483648;
}
}
value = value * 10 + number;
} else if (*p == ' '){
if (start) {
break;
} else {
++p;
continue;
}
} else {
break;
}
++p;
}
int result = value * flag;
if (result * flag >= 0) {
return result;
} else {
if (flag == 1) {
return 2147483647;
} else {
return -2147483648;
}
}
}
};