刷题四:给定字符串,转化为数字

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tongjinrui/article/details/82317061

leetcode原题:其实也就是实现一个atoi的函数。

思路如下:首先要找到数字出现的位置,如果数字前面有空格,不做处理,往下继续遍历。最后再判断是否为32位所能容纳的范围内。

C++代码如下:

int Myatoi(string s)
{
    if(s.empty() == true)
        return 0;
    int temp = 0;
    bool sign = false;
    int i = 0;
    
    while(i < s.size() && s[i] == ' ')//这一步是为了把空格隔过去
    {
        i++;
    }
    if(s[i] == '+')
    {
        i++;
    }
    else if(s[i] == '-')
    {
        sign = true;
        i++;
    }
    for(; i < s.size(); i++)
    {
        if(s[i] < '0' || s[i] > '9')
            break;
        if(temp > INT_MAX / 10 || (temp == INT_MAX / 10 && (s[i] - '0')> INT_MAX % 10))//判断最后一个元素是否比最大元素的最后一个元素大
        {
            return sign == true ? INT_MIN:INT_MAX;
        }
        temp = temp * 10 + s[i] - '0';
    }
    if(sign == true)
        return -temp;
    else
        return temp;
   
}

猜你喜欢

转载自blog.csdn.net/tongjinrui/article/details/82317061