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.
开始用stringstream,太慢,就改为这种算法
unsigned int 0~4294967295
int -2147483648~2147483647
unsigned long 0~4294967295
long - 2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:1844674407370955161
__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615
class Solution {
public:
int myAtoi(string str) {
long result = 0;
bool negative = false;
int i = str.find_first_not_of(' ');
if (str[i] == '-') negative = true,i++;
else if (str[i] == '+') i++;
for (int n = i; i - n <= 10 && isdigit(str[i]); i++) result = result * 10 + (str[i]-'0'); //如果超过十位,肯定就是越界了
if (negative) result = -result;
return (result > INT_MAX ? INT_MAX : (result < INT_MIN ? INT_MIN : result));
}
};