思路:
此题根据题目要求去判断就行了
代码:
//String to Integer (atoi) -- 字符串转换整形 public static int myAtoi(String str) { String str1 = str.trim(); String res = ""; if(str1.startsWith("+")){ str1 = str1.substring(1); if(str1.startsWith("-")){ return 0; } } if(str1.equals("")||((str1.charAt(0)<48||str1.charAt(0)>57)&&str1.charAt(0)!='-')){ return 0; }else{ res += str1.charAt(0); } for (int i = 1; i < str1.length(); i++) { char c = str1.charAt(i); if(c>=48 && c<=57){ res += c; }else{ break; } } int int_max = (int) (Math.pow(2, 31) - 1); int int_min = (int) -Math.pow(2, 31); //去掉开头的一系列0 if(res.startsWith("-")){ res = res.substring(1); int reslen = res.length(); for (int i = 0; i < reslen; i++) { if (res.startsWith("0")) { res = res.substring(1); }else{ break; } } res = "-"+res; }else{ int reslen = res.length(); for (int i = 0; i < reslen; i++) { if (res.startsWith("0")) { res = res.substring(1); }else{ break; } } } if(res.equals("")||res.equals("-")){ return 0; } //判断最后的数字是否在题目所给定的范围内 if(res.startsWith("-")){ if(res.length()>String.valueOf(int_min).length() || Double.parseDouble(res)<int_min){ return int_min; }else{ return (int) Double.parseDouble(res); } }else{ if(res.length()>String.valueOf(int_max).length() || Double.parseDouble(res)>int_max){ return int_max; }else{ return (int) Double.parseDouble(res); } } }