leetcode: String to Integer (atoi)

想要一次性想到所有的规则可有点难度,尤其是溢出的处理。

    public int atoi(String str) {
        // Start typing your Java solution below
        // DO NOT write main() function
        if(str.length() == 0)
            return 0;
        int i=0;
        int flag = 1;
        long tmp = 0;
        while(str.charAt(i)==' ')
            i++;
        if(str.charAt(i) == '+')
            i++;
        if(str.charAt(i) == '-')
        {
            i++;
            flag = -1;
        }
        for(int j=i; j<str.length(); j++){
            if(str.charAt(j)>'9' || str.charAt(j)<'0')
                break;
            tmp = (str.charAt(j) - '0') + tmp * 10;
        }
        tmp = tmp * flag;
        if(tmp>Integer.MAX_VALUE)
            tmp = Integer.MAX_VALUE;
        else if (tmp<Integer.MIN_VALUE)
            tmp = Integer.MIN_VALUE;
        return (int)tmp;   
    }

 

posted @ 2013-09-03 18:36  nanpo  阅读(869)  评论(1编辑  收藏  举报