问;将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0示例1输入
+2147483647 1a33输出
2147483647 0
public class Solution {
public int StrToInt(String str) {
char [] s = str.toCharArray();
int n = str.length();
int res=0;
//正负号标志位
int t=1;
if(n==0) return 0;
//如果开始是符号,提前标记
if(s[0]=='-') t=-1;
//如果第一个字符是符号位,从第二个字符开始,负责从第一个字符开始
for(int i=(s[0]=='-' || s[0]=='+')?1:0;i<n;i++){
//判断是否是数字
if(!(s[i]>='0' && s[i]<='9')) return 0;
//str[i] & 0x0f 相当于 ch-'0'
res = res*10+(s[i] & 0xf);
}
return res*t;
}
}