实现 atoi
,将字符串转为整数。
提示:仔细考虑所有输入情况。如果你想挑战自己,请不要看下面并自己考虑所有可能的输入情况。
说明:这题解释的比较模糊(即没有指定输入格式)。你得事先汇集所有的输入情况。
字符串转整型数是典型的字符串处理, 对于这道题没有什么技巧,就是一个字符一个字符进行处理,同时需要对边界条件进行有效的控制
1、循环遍历跳过数字前的空格;
2、记录第一个正负符号;
3、正负号后开始对字符串进行遍历,若遇到非0~9之间的字符就跳出循环;
4、对每一次叠加的结果进行上、下届的判断;
叠加结果我用的是long int,直接int不行。
细节见代码:
class Solution {
public:
int myAtoi(string str) {
if (str.size() == 0)
{
return 0;
}
int len = 0;
len = int(str.size());
long int result = 0;
int i = 0;
int temp = 0;
int flag = 1;
while (str[i] == ' ')
{
i++;
}
if (str[i] == '-')
{
flag = -1;
i++;
}
else if (str[i] == '+')
{
flag = 1;
i++;
}
while (i < len)
{
if (str[i] < '0' || str[i] > '9')
{
break;
}
temp = str[i] - '0';
result *= 10;
result += temp;
if (result >= 2147483647 && flag == 1)
{
return 2147483647;
}
if (-result <= -2147483648 && flag == -1)
{
return -2147483648;
}
i++;
}
return result*flag;
}
};