java的int大小:-2147483648——2147483647
这道题主要的难点是怎么判断出界
class Solution {
public int strToInt(String str) {
int len = str.length();
int index = 0;
int hasflag = 1;
int res = 0;
int bndry = Integer.MAX_VALUE / 10;
while(index<len&&str.charAt(index)==' ') index++;
if(len==0||index==len) return 0;
if(str.charAt(index)=='-'){
hasflag = -1;
index++;
}
else if(str.charAt(index)=='+'){
hasflag=1;
index++;
}
//if(str.charAt(index)<'0'||str.charAt(index)>'9') return 0;
while(index<len){
if(str.charAt(index)>='0'&&str.charAt(index)<='9'){
if(res > bndry || (res==bndry&&str.charAt(index)>'7')){
if(hasflag == -1) return Integer.MIN_VALUE;
else return Integer.MAX_VALUE;
}
res = res*10 + (str.charAt(index)-'0');
index++;
}else break;
}
return hasflag * res;
}
}