Fork me on GitHub

String to Integer

String to Integer(atoi)

原题描述

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);
}
您的赞赏是对我最大的支持,谢谢!