String to Integer (atoi)

来源:互联网 发布:手机淘宝能货到付款吗 编辑:程序博客网 时间:2024/04/26 20:06

原题链接

问题:将字符串转换为整数,最大值IN_MAX = 2147483647,最小值 IN_MIN = -2147483648,超过范围,返回边界值。

考虑的问题:

1)前导空格

2)符号 ‘+’,‘-’

3)为了能够判断转换后的值是大于IN_MAX 或小于IN_MIN,存储结果用无符号整形。

//code

class Solution{public:int atoi(const char *str){const int IN_MAX = 2147483647;const int IN_MIN = -2147483648;const char *cur = str;unsigned int re = 0;int sig = 1;//skip forehead blanks.while(*cur && *cur == ' ') ++cur;    if(*cur == '\0') return 0;if(*cur == '-')  {sig = -1; ++cur;}else if(*cur == '+'){ ++cur;}int cnt = 0;while (*cur && *cur >= '0' && *cur <= '9'){if(++cnt > 10)//big than INMAX{re = IN_MAX + 1;break;}re *= 10;re += *cur - '0';++cur;}if(re > IN_MAX && sig == -1)return IN_MIN;else if(re > IN_MAX && sig == 1)return IN_MAX;else return (int)re * sig;}};


0 0
原创粉丝点击