这题难就难在不知道要考虑那些情况,也没个实例
参考:有四个条件需要考虑:
自己参考上面四个条件写出了自己的代码,结果老是错。例如:“+-2”,结果应该是0
参考实现
/* * 8. String to Integer (atoi) * Implement atoi to convert a string to an integer. * 2016-2-20 */ public static int myAtoi(String str) { if (str == null || str.length() < 1) { return 0; } str = str.trim(); // kill add white spaces int i = 0; // index of str char flag = '+'; // default positive if (str.charAt(0) == '-') { flag = '-'; i++; } else if (str.charAt(0) == '+') { i++; } double res = 0; // abandon the non-digit char; calculate the result while (str.length() > i && str.charAt(i) >= '0' && str.charAt(i) <= '9') { res = res * 10 + str.charAt(i) - '0'; i++; } if (flag == '-') res = -1 * res; if (res > Integer.MAX_VALUE) { return Integer.MAX_VALUE; } else if (res < Integer.MIN_VALUE) { return Integer.MIN_VALUE; } return (int) res; }
自己的代码:
class Solution { public static int myAtoi(String str) { if(str ==null ||str.length()<1){ return 0; } str = str.trim(); char flag = '+'; int j=0; if(str.charAt(0)=='-'){ flag = '-'; j++; }else if(str.charAt(0)=='+'){ flag = '+'; j++; } double result = 0; for (int i = j; i < str.length()&&str.charAt(i) >= '0' && str.charAt(i) <= '9'; i++) { result = result*10 + str.charAt(i)-'0'; } if (flag == '-') result = -1 * result; if (result > Integer.MAX_VALUE) { return Integer.MAX_VALUE; } else if (result < Integer.MIN_VALUE) { return Integer.MIN_VALUE; } return (int) result; }}