能看懂的留个言,虽然是我写出来的代码,但我自己看的都头疼,这个是可以通过的
class Solution {
public:
int fun(string s, int index, int flag)
{
unsigned int res = 0;
int end = index + 1;
while (end < s.length() && (s[end] >= '0'&&s[end] <= '9'))end++;
for (int i = index; i < end; ++i)
{
res *= 10;
if (res>unsigned(1<<28)&&i<end-1) {
if (flag < 0)return int(1 << 31);
if (flag > 0)return int(~(1 << 31));
}
res += (s[i] - '0');
if (res>unsigned(1<<28) && i < end - 1) {
if (flag < 0)return int(1 << 31);
if (flag > 0)return int(~(1 << 31));
}
}
if (flag > 0 && res >= (1 << 31))return int(~(1 << 31));
if (flag<0 && res>unsigned(1 << 31))return int(1 << 31);
return (int)flag*res;
}
int myAtoi(string s) {
int index1 = 0, len = s.length();
while (index1<len&&s[index1] == ' ')index1++;
if (index1 == len)return 0;
if (s[index1] == '+' || s[index1] == '-')
{
int flag = 0;
if (s[index1] == '+')flag = 1;
else if (s[index1] == '-')flag = -1;
int index2 = index1 + 1;
if((s[index2]<'0'||s[index2]>'9')||index2==len)return 0;
int res = 0;
res = fun(s, index2, flag);
return res;
}
else if (s[index1] >= '0'&&s[index1] <= '9')
{
int res = 0;
res = fun(s, index1, 1);
return res;
}
else
{
return 0;
}
}
};