Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
My C++ solution!
int myAtoi(string str)
{
bool flag=false;
char label;
int len=str.length();
//去掉空格
while(str[0]==32&&len)
{
str.erase(0,1);
len--;
}
//首字母
if(len)
{
if((str[0]>'9'||str[0]<'0')&&str[0]!='-'&&str[0]!='+')
return 0;
else if(str[0]=='-'||str[0]=='+')
{
if(len==1)
return 0;
else if(str[1]>'9'||str[1]<'0')
return 0;
}
}
if(str[0]=='-'||str[0]=='+')
{
label=str[0];
flag=true;
str=str.substr(1,len-1);
}
len=str.length();
long long integer=0;
int i=0;
while(len&&str[i]<='9'&&str[i]>='0')
{
integer=integer*10+str[i]-'0';
if(label=='-'&&integer>=0x80000000)
{
integer=0x80000000;
break;
}
else if(integer>0x7fffffff)
{
integer=0x7fffffff;
break;
}
len--;
i++;
}
if(flag==true)
integer=(label=='-')?(-integer):integer;
return integer;
}