Leetcode 8. 字符串转换整数 (atoi) C++

题目描述

在这里插入图片描述

解答

本题的处理就是分情况处理一下,不同的case,处理上有点差别。没有什么特别之处,主要是对语法要熟悉。

class Solution {
public:
    int myAtoi(string str) {
        int i=0;
        while(' ' == str[i]) ++i;// 去掉空格
        long flag=1;
        if('+' == str[i])
        {
            flag=1;
            return fun(str, ++i, flag);
        }
        else if('-'==str[i])
        {
            flag=-1;
            return fun(str, ++i, flag);
        }
        else if(str[i]-'0'>=0 && str[i]-'0'<=9)
        {
            flag=1;
            return fun(str, i, flag);
        }
        else
        {
            return 0;
        }
    }
    int fun(string str, int i, const long flag)  //计算对应的数字字符串转化为数字的结果
    {
        long res=0;
        while(str[i]-'0'>=0 && str[i]-'0'<= 9)
        {
            res= res*10 +(str[i++]-'0');
            if(res*flag > pow(2,31)-1) return INT_MAX;
            if(res*flag < -pow(2,31))return INT_MIN;
        }
        res= res*flag;
        return int(res);
    }
};

猜你喜欢

转载自blog.csdn.net/yuanliang861/article/details/84756151