[leetcode]String to Integer (atoi)

class Solution {
public:
    int myAtoi(string str) {
        long long sum = 0;
        int temp1 = 1;
        int max1 = 0x7fffffff;  
        int min1 = 0x80000000;  
        if(str.length() == 0 ) return 0;
        int k = 0;
        while(str[k] == ' ')
        {
            k++;
        }
        if(str[k] == '-') {temp1=-1;k++;}
        else if(str[k] == '+') {k++;}
        
        for(int i = k ; i < str.length(); i++)
        {
            
            if(str[i] >= '0' && str[i] <= '9')
            {
                 sum = sum*10 + (str[i]-'0');
                 if(sum > max1 || sum < min1)    
                 {
                    if(temp1 == -1)
                     {
                         return min1;
                     }
                    return max1;
                }
           }
            else break;
        }
        sum *= temp1;
        return (int)sum;
    }
};
View Code

String to Integer (atoi) 

这题是我做的比较麻烦的一道题。要考虑:

1、溢出

2、开头只能+ - 之后如果出现+ - 则错误。

3、空格考虑。

4、以及你定义的sum能否装得下溢出,因为要判断是否超过最大最小值。

总之,考虑的挺全。很锻炼人。面试必备啊简直

posted on 2015-10-20 20:29  Mereyct  阅读(212)  评论(0编辑  收藏  举报

导航