lintcode-转换字符串到整数

来源:互联网 发布:仁显王后的男人 知乎 编辑:程序博客网 时间:2024/06/01 10:33

实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。
样例
“10” =>10

“-1” => -1

“123123123123123” => 2147483647

“1.0” => 1

class Solution {public:    /**     * @param str: A string     * @return An integer     */    int atoi(string str) {        // write your code here        if(str.length()<=0) return 0;        int i=0;        bool flag=true;        while(str[i]==' ') i++;//处理前面的空格        if(str[i]=='+' || str[i]=='-')//处理前面的+、-号        {            if(str[i]=='+')               flag=true;            if(str[i]=='-')//处理前面的+、-号               flag=false;            i++;        }        long long sum=0;        int digit=0;        for(;i<str.length();i++)        {            if(str[i]<'0' || str[i]>'9') break;            else            {                int mins=(flag==true)?1:-1;                digit=mins*(str[i]-'0');                sum=sum*10+digit;                if((flag && sum>0x7fffffff))//正数                {                    return numeric_limits<int>::max();                }                if(!flag && sum<(signed int)0x80000000)//负数                {                    return numeric_limits<int>::min();                }            }        }        return sum;    }};
0 0
原创粉丝点击