原文题目:
读题:
这个题目主要是判断输入,以及有符号数溢出情况,以下输入是合理的
1) 输入" 12" 输出12
2)输入" -23a34" 输出-23
3)输入 "+010" 输出10
以下是AC代码:
#define MAXNUM 2147483647
#define MINNUM -2147483648
class Solution
{
public:
int myAtoi(string str)
{
int i = 0;
int result = 0;
int length = str.size();
int digit = 0;
int signal = 1;
if(!length)
{
//cout<<"error! Input is empty!"<<endl;
return 0;
}
while(str[i] ==' ')
{
i++;
}
if (str[i] =='-')
{
signal = -1;
i++;
}
else if(str[i] =='+')
{
i++;
}
while(i<length)
{
if(str[i] <'0'||str[i]>'9')
{
return signal*result;
}
digit = str[i]-'0';
if(signal == 1 && result*10.0+digit > MAXNUM)
{
return MAXNUM;
}
if(signal == -1 && -(result*10.0+digit) < MINNUM)
{
return MINNUM;
}
result = result*10+digit;
i++;
}
return signal*result;
}
};