Leetcode Problem8

String to Integer (atoi)

题目要求将string转换为数字(包括正负数,也就是说可以带正负号),如果该数字前含有除空格外的其他字符,则默认为0。而且数字一旦超过int型可以表示的范围,则取int可以表示的最大值/最小值。

本题目的话只要注意一些条件即可:非法字符,空格。

解法:一开始我们要跳过字符串前面的空格,遇到不是空格即停下。判断该位置是否是正负号,如果不是则为0。否则判断下一位置是否为数字,不是则为0,是的话将数储存起来,继续操作直到遇到字母即可停止。

class Solution {
public:
    int myAtoi(string str)
     {
        int index=0;
        while(str[index]==' ')
            index++;
        int flag=1;
        if(str[index]=='-')
        {
            index++;
            flag=-1;
        }
        else if(str[index]=='+')
            index++;
        int res=0;
        while(index<str.size()) 
        {
            if(str[index]<'0' || str[index]>'9')
                return flag*res;
            int digit=str[index]-'0';
            if(flag==1 && res*10.0+digit>INT_MAX)
                return INT_MAX;
            else if(flag==-1 && -(res*10+digit)<INT_MIN)
                return INT_MIN;
            res = res*10+digit;
            index++;
        }
        return flag*res;
    }
};

猜你喜欢

转载自blog.csdn.net/vandance/article/details/81460548