将String转换成Integer,这个转换的方式跟之前的reverse integer非常的像。
下面讲讲重点要注意的几个方面。
1. 首尾的空白符号要忽略掉。
2. 处理一开始的符号问题。
3. 处理溢出问题。
4. 处理好在parse的时候,遇到非法的字符(即不是digit)的问题 ( 碰到了就返回当前parse的结果)。
代码:
public int myAtoi(String str) {
// remove spaces
str = str.trim();
if (str.length() == 0) {
return 0;
}
// doing with the sign
int begin = 0;
boolean isNeg = false;
if (str.charAt(0) == '+') {
begin = 1;
}
else if (str.charAt(0) == '-') {
begin = 1;
isNeg = true;
}
int result = 0;
for (int i = begin; i < str.length(); i++) {
// invalid character, break
if (!Character.isDigit(str.charAt(i))) {
break;
}
//checking overflow
if ((Integer.MAX_VALUE - (str.charAt(i) - '0') % 10) / 10 < result) {
return isNeg ? Integer.MIN_VALUE : Integer.MAX_VALUE;
}
result = result * 10 + str.charAt(i) - '0';
}
return isNeg ? -result : result;
}