1.去掉前导空格 2.正负号 3.只读数字,忽略非数字 4.把前面读的数字转换为整数 5.范围
class Solution {
public int myAtoi(String s) {
int len=s.length();
char[] charArray=s.toCharArray();
int index=0;
/*丢掉前导空格*/
while(index<len && charArray[index]==' '){
index++;
}
if(index==len){
return 0;
}
/*正负号*/
int sign = 1;
char firstChar = charArray[index];
if (firstChar=='+') {
index++;
} else if (firstChar=='-') {
index++;
sign = -1;
}
/*转换数字*/
int res=0;
while(index<len){
char curChar=charArray[index];
if(curChar<'0'||curChar>'9'){
break;
}
if(res>Integer.MAX_VALUE/10 || (res==Integer.MAX_VALUE/10 && (curChar-'0')>Integer.MAX_VALUE%10)){
return Integer.MAX_VALUE;
}
else if(res<Integer.MIN_VALUE/10 || (res==Integer.MIN_VALUE/10 && (curChar-'0')>-(Integer.MIN_VALUE%10))){
return Integer.MIN_VALUE;
}
res=res*10+sign*(curChar-'0');
index++;
}
return res;
}
}