Leetcode 8 String to Integer (atoi)

来源:互联网 发布:linux用户权限文件 编辑:程序博客网 时间:2024/06/08 17:11

Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.

Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.


问题本身的思路并不难,但是有很多需要考虑的细节

null, empty, space,sign, not digit and overflow

public class Solution {    public int myAtoi(String str) {        if(str == null || str.length() == 0){            return 0;        }                int index = 0;        int sign = 1;        while(str.charAt(index) == ' ' && index < str.length()){//空格            index++;        }                if(str.charAt(index) == '+' || str.charAt(index) == '-'){        sign = str.charAt(index) == '+' ? 1 : -1;//正负号 默认为正        index ++;        }                int total = 0;        while(index < str.length()){            if(str.charAt(index) > '9' || str.charAt(index) < '0' ){//非数字的情况                break;            }            int digit = str.charAt(index) - '0';            if(Integer.MAX_VALUE/10 < total || Integer.MAX_VALUE/10 == total && Integer.MAX_VALUE %10 < digit)//注意overflow            return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;        total = 10 * total + digit;        index ++;        }        return total * sign;    }}