把字符串转换成整数
题目:将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
分析:字符转整数比较简单,难的是考虑全面性,一是范围溢出,二是符号,三是有效字符以外的输入判断,四是空字符串处理,五是空引用处理。
public class Solution {
public int StrToInt(String str) {
if(str == null || str.equals(""))
return 0;
char[] charArray = str.toCharArray(); // 转成字符数组
boolean minus = false; // 记录符号
int index = 0; // 当前处理字符
long num = 0; // 用long防止溢出
// 判断符号
if(charArray[index] == '+')
++index;
else if(charArray[index] == '-') {
minus = true;
++index;
}
// 开始转化
if(charArray.length > index) {
int flag = minus ? -1 : 1;
while(index != charArray.length) {
if(charArray[index] >= '0' && charArray[index] <= '9') { // 合法字符才处理
num = num * 10 + flag * (charArray[index] - '0');
if((!minus && num > 0x7FFFFFFF) || (minus && num < 0x80000000)) { // 整型范围
num = 0;
break;
}
++index;
} else {
num = 0;
break;
}
}
}
return (int)num;
}
}