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.
class Solution {
public:
int atoi(const char *str) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int revalue=0;
int i=0 , flag=1 , len=strlen(str);
for( ; i<len && str[i]==' '; i++);
if(i==len)
return revalue;
if(str[i]=='-'){
flag=-1;
i++;
}
if(str[i]=='+')
i++;
int tmp=0;
if(flag==1){
for( ; i<len ; i++){
if(str[i]<'0' || str[i]>'9'){
return tmp;
}
int inner=tmp;
tmp=tmp*10+str[i]-'0';
if(tmp/10!=inner)
return 2147483647;
}//but how can we judge if it's overflow
}else{
for(; i<len ; i++){
if(str[i]<'0' || str[i]>'9')
return tmp;
int inner=tmp;
tmp=10*tmp-(str[i]-'0');
if(tmp/10!=inner)
return -2147483648;
}
}
return tmp;
}
};