要求
如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。
假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。
该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。
public int myAtoi(String str) {
str = str.trim();
if (null == str || str.length() == 0) {
return 0;
}
char[] strArray = str.toCharArray();
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < strArray.length; i++) {
char c = geteffectiveChar(i, strArray[i]);
if (c == ' ') {
break;
}
stringBuilder.append(c);
}
if (stringBuilder.toString().length() == 0 ||
(stringBuilder.toString().length() == 1 &&
(stringBuilder.toString().charAt(0) == '+' || stringBuilder.toString().charAt(0) == '-'))) {
return 0;
}
int result;
try {
result = Integer.parseInt(stringBuilder.toString());
} catch (NumberFormatException e) {
if(stringBuilder.toString().charAt(0) == '-'){
return Integer.MIN_VALUE;
}else {
return Integer.MAX_VALUE;
}
}
return result;
}
private char geteffectiveChar(int i, char c) {
if ((i == 0 && (c == '-' || c == '+')) || (c >= '0' && c <= '9')) {
return c;
}
return ' ';
}