题目
思路
代码
class Solution { public int myAtoi(String s) { char[] chars = s.toCharArray(); int len = chars.length, index = 0, sign = 1; //去掉前导符号 while (index < len && chars[index] == ' ') { index++; } //去除空格后字符串为空了 if (index == len) return 0; //判断第一个非空字符是否为+、-、数字、其他字符 if (chars[index] == '-') { sign = -1; index++; } else if (chars[index] == '+') { index++; } else if (chars[index] < '0' || chars[index] > '9') { return 0; } int ans = 0; while (index < len && chars[index] >= '0' && chars[index] <= '9') { int digit = chars[index] - '0'; if (ans > (Integer.MAX_VALUE - digit) / 10) { // 本来应该是 ans * 10 + digit > Integer.MAX_VALUE // 但是 *10 和 + digit 都有可能越界,所有都移动到右边去就可以了。 return sign == -1 ? Integer.MIN_VALUE : Integer.MAX_VALUE; } ans = ans * 10 + digit; index++; } return sign * ans; }}
字符串转换整数(atoi)