8. String to Integer (atoi)

来源:互联网 发布:淘宝店铺做淘宝客 编辑:程序博客网 时间:2024/06/03 22:39

题目

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. 

分析存在四种情况

(1)字符串前面有空格

__ asf456

(2)字符串中有字母

354436bdc

(3)字符串前面有符号

+456

(4)字符串中的数字大于 INT_MAX 或小于INT_MIN

+545654756656856

解题:

class Solution {public:    int myAtoi(string str) {        int flag = 1;        long result = 0;        int max = 2147483647;        int min = -2147484648;        int i = 0;        while (str[i] != '\0'&&str[i] == ' ')          {            i++; //跳过空格        }        if (str[i] == '-')        {            flag = -1;            ++i; //带符号的情况        }        else if (str[i] == '+')        {            flag=1;            ++i;        }        while (str.length()>i)        {            if (str[i] >= '0'&&str[i] <= '9')            {                result = result * 10 + (str[i] - '0');                ++i;            }            else //不是数字即中断循环                break;            if (result*flag > max)//判断越界                return max;            if (result*flag<=min)                return min;        }        return result*flag;    }};
原创粉丝点击