题目链接:点击这里
测试样例好恶心
会爆掉long long
class Solution {
public:
int myAtoi(string str) {
int len = str.length();
const int intmax = 0x7fffffff; //2^31-1 = 2147483647
const int intmin = 0x80000000; //-2^31 = -2147483648
const long long maxx = 0x80000001;
long long ans = 0;
bool flag = true; //符号
int i = 0;
while(i<len && str[i]==' ') i++; //跳过空格
if(i<len && str[i]=='+') {
i++;
}
else if(i<len && str[i]=='-') {
flag = false;
i++;
}
while(i < len)
{
if(str[i]>='0'&&str[i]<='9')
{
ans = ans*10 + str[i]-'0';
if(ans > maxx) ans = maxx;
}
else //不是数字就跳出循环
break;
i++;
}
if(!flag) ans = -ans;
if(ans>intmax) ans = intmax;
if(ans<intmin) ans = intmin;
return ans;
}
};