先判断第一个字符是‘+’ 还是‘-’ ,如果都不是那么从头开始遍历字符数组,如果发现不是数字那么就break,返回最终的res;如果是数字那么就判断他是否溢出,返回相应的结果。如果全都正常的话,就用res*10+arr[i].
class Solution {
public int strToInt(String str) {
char[] cArr= str.trim().toCharArray();
int n=cArr.length;
if(n==0) return 0;
int flag=1; int res=0;
int bir=Integer.MAX_VALUE/10;
int i=1;
if(cArr[0]=='-') flag=-1;
else if(cArr[0]!='+') i=0;
for(int j=i;j<n;j++){
if(cArr[j]<'0'||cArr[j]>'9') break;
else if(res>bir||res==bir&&cArr[j]>'7'){
return flag==1?Integer.MAX_VALUE:Integer.MIN_VALUE;
}
res=res*10+(cArr[j]-'0');
}
return flag*res;
}
}