注意情况:负数的情况,字符串中含有非数字的情况,字符串两头有空格的情况,溢出的情况(先转成long)
public class Solution {
public int atoi(String str) {
if(str == null || str.length() == 0) return 0;
int i=0;
long sum = 0;
boolean flag = false;
str = str.trim();//空格
if(str.charAt(0) == '+'){
i++;
}
else if(str.charAt(0) == '-'){
i++;
flag = true;
}
for(; i<str.length(); i++){
char c = str.charAt(i);
if(c >= '0' && c<='9')
sum = sum * 10 + c - '0';
else break;//非数字情况
}
if(flag){//负数情况
sum = -sum;
}
if(sum < Integer.MIN_VALUE){//考虑溢出
sum = Integer.MIN_VALUE;
}
else if(sum > Integer.MAX_VALUE){
sum = Integer.MAX_VALUE;
}
return (int)sum;
}
}