【LeetCode】8. String to Integer (atoi)

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.

Update (2015-02-10):

The signature of theC++function had been updated. If you still see your function signature accepts aconst char *argument, please click the reload buttonto reset your code definition.

spoilers alert... click to show requirements for atoi.

Subscribeto see which companies asked this question.

Show Tags

Show Similar Problems


题意:

就是自己实现atoi,这题最坑的是越界的时候应该返回最大或最小值max_int 与min_int,但题目中没有提示——当然这样设计的一个目的可能是防止刷题人直接调用itoa函数。注意 后面有字符时,直接跳出输出前面的数,与atoi一致。

我的做法是定义long long型,超限时break。

class Solution {
public:
    int myAtoi(string s) {
        long long rst=0,i=0;
        bool normal=true;
        int s1=1;
                while(s[i]==' ') i++;
        if(s[i]=='-') {s1=-1; i++;}
        else if(s[i]=='+') i++;

        
        while(i!=s.size()){
            if(s[i]<='9'&&s[i]>='0')
             {rst=rst*10+s[i++]-'0';
                if(rst>(long long)INT_MAX+1LL) break;
             }
             else if(s[i]=='+'||s[i]=='-')
            {normal=false;
                break;
            }
            else break;
        }
        if(!normal) return 0;
        
        rst=rst*s1;
        if(rstINT_MAX) return INT_MAX;
        
        return rst;
    }
};



你可能感兴趣的:(leetcode)