String to Integer (atoi)

/*

判定是否为空

trim 后是否长度为0

开始字符如果不是数字或者符号 return 0;

sign = 1;

如果开始为‘-’ sign = -1;

start + 1;

设置num 为long类型 然后 如果字符是数字 则 *10 叠加;

同时判断是否越界;

*/

class Solution {

    public int myAtoi(String str) {

        if(str == null) return 0;

        str = str.trim();

        if(str.length() == 0) return 0;


        if(!(str.charAt(0) == '-' || str.charAt(0) == '+' || (str.charAt(0) <= '9' && str.charAt(0) >= '0'))) return 0;


        int sign = 1;

        long num = 0;

        int start = 0;

        if(str.charAt(0) == '-') {

            sign = -1;

            start += 1;

        }

        if(str.charAt(0) == '+') {


            start += 1;

        }

        for(; start < str.length(); start++) {

            if(str.charAt(start) <= '9' && str.charAt(start) >= '0') {

                num = num * 10 + (str.charAt(start) - '0');

                if(num > Integer.MAX_VALUE) {

                    return (int)(num = sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE);   

                }


            }else {

                break;

            }

        }

        return (int)(num * sign);

    }

}

你可能感兴趣的:(String to Integer (atoi))