题目链接
1.去除前导空格
2.第一个字符是数字吗
3.第一个字符是'+'吗
4.第一个字符是'-'吗
5.后边的每个字符是数字吗
class Solution { public int myAtoi(String s) { char[] chars = s.toCharArray(); int n = chars.length; int index = 0; while(index<n && chars[index] == ' '){ //去掉前导空格 index++; } if(index == n){ //如果去掉前导空格后到末尾 return 0; } //是否为负 boolean negative = false; if(chars[index] == '-'){ negative = true; index++; }else if(chars[index] == '+'){ index++; }else if(!Character.isDigit(chars[index])){ return 0; } int ans = 0; while(index<n && Character.isDigit(chars[index])){ //将后边连续的数字字符转换成数字 int digit = chars[index] -'0'; //判断是否越界 if(ans>(Integer.MAX_VALUE - digit)/10){ return negative?Integer.MIN_VALUE : Integer.MAX_VALUE; } ans = ans * 10 + digit; index++; } return negative? -ans : ans; } }