腾讯五十题No.5 字符串转换整数

题目链接
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;
    }
}
上一篇:Java的包装类


下一篇:int和Integer