1.string to int ,要注意的点一堆。
public class Solution {
/**
* 鲁棒性检测
* @param str
* @return
*/
public int atoi(String str) {
int res=0,n=str.length();//res为结果字符串
int i=0,len=0;//len表示有数字的个数
boolean flag=true; //正负号
if(str==null||str.equals(""))//1.首先判断是不是无效的
return res;//无效返回0
while(str.charAt(i)==' ')//2.空格去除
i++;
if(str.charAt(i)=='-'){//3.考虑判断正负号
i++;
flag=false;
}
if(str.charAt(i)=='+')
i++;
for(;i<n;i++){
if(str.charAt(i)>='0'&&str.charAt(i)<='9'){//4.如果有非法字符直接跳出
len++;
char c=str.charAt(i);
res=res*10+c-'0';
if(len>10)//5.当位数大于10时,判断flag(正负号)
return flag?Integer.MAX_VALUE:Integer.MIN_VALUE;
if(flag&&res<0)//6.此时res小于0是不正常的,判断flag
return Integer.MAX_VALUE;
if(!flag&&res<0)
return Integer.MIN_VALUE;
}
else{
return flag?res:(-1)*res;
}
}//7.别忘最终跳出的条件
return flag?res:(-1)*res;
}
public static void main(String[] args) {
String str = " wahah";
System.out.println(str);
System.out.println(Integer.MAX_VALUE);
}
}