[LeetCode]String to Integer (atoi)

来源:互联网 发布:混合云 数据复制 编辑:程序博客网 时间:2024/06/08 05:17

将string或const char *c转成int,首先找第一个非空字符,如果第一个非空字符是“+-0123456789”说明为有效int,否则输出0

找到非空字符后,如果第一个非空字符为符号位,记录符号,否则,继续。
符号位后的字符不是”0123456789“也是无效的int,输出0
其他情况正确处理

/*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 the C++ function had been updated. If you still see your function signature accepts a const char * argument, please click the reload button  to reset your code definition.*/class Solution {public://stoi,stod,stof(string)    int myAtoi(string str) {        string::size_type sz;        for(sz=0; sz!=str.size(); ++sz)     //找非空字符            if(str[sz]==' ')                continue;            else                break;        int flag = 1;   //1 for plus        if(str[sz]=='-'){            flag = -1;            ++sz;        }        else if(str[sz]=='+'){            flag = 1;            ++sz;        }        char c = str[sz];        long long int ret=0;        if(c<'0'||c>'9')    return 0;   //invalid        while(c>='0'&&c<='9'){            if(flag ==1)            ret = 10*ret + c-'0';            else            ret = 10*ret-(c-'0');            c = str[++sz];            if(ret>INT_MAX)                ret = INT_MAX;            else if(ret<INT_MIN)                ret = INT_MIN;        }        return ret;    }};
0 0
原创粉丝点击