String to Integer

原题描述

Implement atoi which converts a string to an integer.
实现c语言中的atoi函数,将string类型转化成int

实现时需要考虑的因素有:

  1. 溢出问题
  2. 输入无效
  3. 丢弃所有空格
  4. 数字正负号

关于溢出,对于像我这种记不清楚int32范围的人,可以直接用long long类型解决。
数字正负号可以使用一个标志位进行标识,代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int myAtoi(string str)
{
    int flag = 0,pos = 0;
    long long number = 0;
    
    //丢弃前面的空白字符串
    while (str[pos] == ' ') 
        pos++;
    //判断正负号,下标移到符号下一位
    if (str[pos] == '-' || str[pos] == '+')
        flag = str[pos++] == '-' ? -1:1;
    
    while (str[pos] >= '0' && str[pos] <= '9') {
        number = 10 * number + (str[pos++]-'0');
        //判断是否超过int32的范围
        if (number >INT_MAX)
            return flag == 1 ? INT_MAX:INT_MIN;
    }
    return (int)(number * flag);
}

留下评论