题目描述 将一个字符串转换成一个整数(实现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'; } }