leetcode atoi函数实现

int atoi(String s) 函数的实现:

1、输入字符串是否是空,

2、是否有正负号

3、考虑转换后的数字是否越界(返回值int 32位)

4、当然也要兼容这种 123abc

 

   public int atoi(String str) {
        int i = 0;
        int symbol = 1;// result multiply 1 or -1
        long result = 0;
        str = str.trim();
        if (str.length() < 1) return 0;

        if (str.charAt(0) == '-' || str.charAt(0) == '+'){
            i++;
            symbol = (str.charAt(0)=='-') ? -1 : 1;
        }

        for (; i < str.length(); i++) {
            if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {
                 int digit = str.charAt(i) - '0';
                 result = 10 *result +digit;
            }
            else {
                break;
            }
        }

        result *= symbol;
        //int 4bytes  32 bits  [-2147483648,2147483647]
        if (result >= -2147483648 && result <= 2147483647){
            return (int)result;
        }
        else{
            return (symbol > 0) ? 2147483647 : -2147483648;
        }


    }
Tagged on: ,

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>