【题目】
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
【代码】
//把字符串转换成整数
public int StrToInt(String str) {
if(str==null||str.length()==0) return 0;
char[] chs=str.toCharArray();
int sym=(chs[0]=='-')?-1:1;
//chs[0]='0';
if(chs[0]=='-'||chs[0]=='+') chs[0]='0';
int sum=0;
for(int i=0;i<chs.length;i++){
if(chs[i]<'0'||chs[i]>'9'){
sum=0;break;
}
sum=sum*10+chs[i]-'0';
}
return sym*sum;
}
【注意】
考虑溢出,把res换成long类型
考虑效率, res = (res << 1) + (res << 3) + (str[i] & 0xf);
替代 res=res*10+str[i]-‘0’;
//0-9的ascii码值为0x30(十六进制48),0x31,0x32 0x33 …0x39,因此与0x0f按位与后只保留个位上的书即0x0,0x1,。。。0x9