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.
int myAtoi(string str) {
int index = 0, sign = 1, total = 0;
if (str.length() == 0) return 0;
while (str[index] == ' ' && index < str.length()) index++;
if (str[index] == '+' || str[index] == '-') {
sign = str[index++] == '+' ? 1 : -1;
}
while (index < str.length()) {
int digit = str[index] - '0';
if (digit < 0 || digit > 9) break;
if (INT_MAX / 10 < total || INT_MAX / 10 == total && INT_MAX % 10 < digit) {
return sign == 1 ? INT_MAX : INT_MIN;
}
total = 10 * total + digit;
index++;
}
return total * sign;
}
网友评论