思路:
题意是将字符串转换成整数,思路很简单,但有几处细节需要考虑:
1. 数字前面有空格,如s=” 123456”,空格需舍弃;
2. 数字前出现了不必要或多于的字符导致数字认证错误,输出0。如s=” b1234”,s=” ++1233”, s=” +-1121”;
3. 数字中出现了不必要的字符,返回字符前的数字。如s=” 12a1”, s=” 123 123”;
4. 数字越界,超过了范围(-2147483648–2147483647),分别返回-2147483648和2147483647。
class Solution {
public:
//AC - 8ms - using dumb direct method;
int myAtoi(string str)
{
int i = 0;
int sign = 1;
long num = 0;
while(isspace(str[i])) i++;
if(str[i]=='-' || str[i]=='+')
if(str[i++] == '-') sign *= -1;
while(str[i]=='0') i++;
while(isdigit(str[i]))
{
num = 10*num + str[i++]-'0';
if(num > fabs(long(INT_MIN))) break;
}
num *= sign;
if(num < INT_MIN) return INT_MIN;
if(num > INT_MAX) return INT_MAX;
return num;
}
}