Implementation
public class Solution {
public int myAtoi(String str) {
if (str == null || str.length() == 0) {
return 0;
}
int sign = 1;
int index = 0;
/* remove the leading white spaces */
// check index isn't out of bound
while (index < str.length() && str.charAt(index) == ' ') {
index++;
}
/* set sign of number */
if (index < str.length() && (str.charAt(index) == '+' ||str.charAt(index) == '-')) {
sign = str.charAt(index) == '+'? 1: -1;
index++;
}
int result = 0;
final int THRESHOLD = Integer.MAX_VALUE / 10; /* */
while (index < str.length() && str.charAt(index) >= '0' && str.charAt(index) <='9' ) {
/*
check of result will be overflow
1. the last digit of MAX is 7.
2. the last digit of MIN is 8.
*/
if (result > THRESHOLD || (result == THRESHOLD && str.charAt(index) > '7')) {
return sign == 1? Integer.MAX_VALUE: Integer.MIN_VALUE;
}
else {
result = result * 10 + str.charAt(index) - '0';
index++;
}
}
return result * sign;
}
}