public class Solution {
public int myAtoi(String str) {
//此题需要注意的细节很多
//1.对于“ -123”,“ +3231”,需要考虑去除最前的空格,主要利用循环
//2.对于越界情况需要判断(此题返回的是32位最大正数或32位最小负数),声明返回值时,需要声明为long
//3.要考虑“+”和无符号的处理
//4.字符和数值的转换需要牢记s.charAt(i)-'0'
//5.遇到非数值时,返回前面的数值
if(str==null||str.length()==0)return 0;
int i=0;
int flag=0;
long res=0;
while(str.charAt(i)==' ')
i++;
if(str.charAt(i)=='-'){
flag=1;
i++;
}else if(str.charAt(i)=='+'){
i++;
}
while(i<str.length()){
//if(str.charAt(i)==' ')i++;
if(str.charAt(i)>='0'&&str.charAt(i)<='9'){
res=res*10+str.charAt(i)-'0';
if(flag==0&&res>0x7fffffff)return 0x7fffffff;
if(flag==1&&-res<0x80000000)return 0x80000000;
}else break;
i++;
}
if(flag==1) res=-res;
return (int)res;
}
}