(PS:这个题,当初看到的时候,我以为是汉诺塔呢)
原题:
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.
注意:考察思维是否全面:0,空格,负数,以及int的最大最小值(最好以16进制)
class Solution {
public:
int myAtoi(string str) {
const int maxint=0x7fffffff;
const int minint=0x80000000;
const long long max=0x100000000;
long long ans=0;
bool flag=false;
int st=0;
while(st<str.length() && str[st]==' ')
{
st++;
}
if(st<str.length() && str[st]=='+')
{
st++;
}
else
{
if(st<str.length() && str[st]=='-')
{
flag=true;
st++;
}
}
for(int i=st;i<str.length();i++)
{
if(str[i]<='9' && str[i]>='0')
{
ans=ans*10+str[i]-'0';
if(ans>max) ans=max;
}
else
{
break;
}
}
if(flag) ans=-ans;
if(ans>maxint) ans=maxint;
if(ans<minint) ans=minint;
return ans;
}
};