题目描述
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),
要求不能使用字符串转换整数的库函数。
数值为0或者字符串不是一个合法的数值则返回0。
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例:
输入
+2147483647 1a33
输出
2147483647 0
转换为字符数组
将字符串转换为字符数组,先判断第一位是否是符号“+”或“-”,记录下来。
然后在加值的时候,先把之前数值乘以10
public class Solution {
public int StrToInt(String str) {
if(str==null || str.length()==0) return 0;
char[] ch = str.toCharArray();
int j =0;
boolean flag = true;
if(ch[j]=='+'){
j++;
}else if(ch[j]=='-'){
flag=false;
j++;
}
int sum = 0;
while(j<ch.length){
if(ch[j]>'9'||ch[j]<'0'){
return 0;
}else{
//sum *=10;
sum =(sum<<1)+(sum<<3);// sum*2 + sum*8 = sum*10
sum+=(ch[j]-'0');
j++;
}
}
return flag?sum:-sum;
}
}