考虑几点:
1 字符串首端是空格
2 正负号
3 溢出
INT_MAX (2147483647)
INT_MIN (-2147483648)
4 题目测试案例中没有考虑非字符串的情况
5 最好是char* str而不是string
int myAtoi(char* str) {
if(*str==NULL)
return 0;
while(*str==‘ ‘)
str++;
int sig=1;
if(*str==‘-‘){
sig=-1;
str++;
}else if(*str==‘+‘)
str++;
long long rest=0;
while(*str>=‘0‘ && *str<=‘9‘){
rest=rest*10+(*str-‘0‘);
if(rest > INT_MAX)
return sig == 1 ? INT_MAX : INT_MIN;
str++;
}
return (int)(sig*rest);
}
原文:http://www.cnblogs.com/wygyxrssxz/p/4493000.html