能看懂的留个言,虽然是我写出来的代码,但我自己看的都头疼,这个是可以通过的
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; } } };