Skip to content

Commit d6a3440

Browse files
committed
Time: 3 ms (59.08%), Space: 6.6 MB (26.15%) - LeetHub
1 parent e7675c1 commit d6a3440

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
class Solution {
2+
public:
3+
int myAtoi(string s) {
4+
string ans;
5+
bool neg = false, pos = false;
6+
bool word = false;
7+
for (int i = 0; i < s.length(); i++)
8+
{
9+
if(s[i] == '-')
10+
{
11+
if(ans.size())
12+
break;
13+
if(pos || ans.size() || neg)
14+
return 0;
15+
else
16+
neg = true;
17+
}
18+
else if(s[i] == '+')
19+
{
20+
if(ans.size())
21+
break;
22+
if(neg || ans.size() || pos)
23+
return 0;
24+
else
25+
pos = true;
26+
}
27+
else if(s[i] == ' ')
28+
{
29+
if(ans.size())
30+
break;
31+
if(pos || neg)
32+
return 0;
33+
}
34+
else if(s[i] == '.')
35+
ans.push_back('.');
36+
else if((s[i] >= 'a' && s[i] <= 'z') ||(s[i] >= 'A' && s[i] <= 'Z'))
37+
{
38+
word = true;
39+
if(!ans.size())
40+
return 0;
41+
if(ans.size())
42+
break;
43+
}
44+
else if(s[i] >= '0' && s[i] <= '9')
45+
{
46+
if(word)
47+
return 0;
48+
ans.push_back(s[i]);
49+
}
50+
}
51+
int k;
52+
for (k = 0; k < ans.length(); k++)
53+
{
54+
if(ans[k] != '0')
55+
break;
56+
}
57+
ans = ans.substr(k);
58+
long long num = 0;
59+
for (int i = 0; i < ans.length(); i++)
60+
{
61+
if(ans[i] == '.')
62+
break;
63+
num = num * 10 + (ans[i] - '0');
64+
if(num > INT_MAX)
65+
{
66+
if(neg)
67+
return INT_MIN;
68+
else
69+
return INT_MAX;
70+
}
71+
}
72+
if(neg)
73+
num *= -1;
74+
return num;
75+
}
76+
};

0 commit comments

Comments
 (0)