题目描述
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。数值为0或者字符串不是一个合法的数值则返回0。
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
解析:本题判断是否能够转换成整数很简单,但是还要判断是否越界;int:-2147483648~2147483647
代码:
public class Solution {
public int StrToInt(String str) {
//如果字符串为空 或者 全部都是空格
//当字符串中全部为空格时,trim()后,便是“”
if(str == null || "".equals(str.trim())){
return 0;
}
char[] chars = str.trim().toCharArray();
int flag = 1;
int res = 0;
int i = 0;
if(chars[i] == '-'){
flag = -1;
}
if(chars[i] == '+' || chars[i] == '-'){
i++;
}
while(i < chars.length){
if(isNum(chars[i])){
int cur = chars[i] - '0';
if(flag == 1 && (res > Integer.MAX_VALUE/10
|| res == Integer.MAX_VALUE/10 && cur > 7)){
return 0;
}
if(flag == -1 && (res > Integer.MAX_VALUE/10
|| res == Integer.MAX_VALUE/10 && cur > 8)){
return 0;
}
res = res * 10 + cur;
i++;
}else{
return 0;
}
}
return res*flag;
}
public static boolean isNum( char c){
return c >= '0' && c <= '9';
}
}