File tree Expand file tree Collapse file tree 1 file changed +76
-0
lines changed
0008-string-to-integer-atoi Expand file tree Collapse file tree 1 file changed +76
-0
lines changed Original file line number Diff line number Diff line change 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+ };
You can’t perform that action at this time.
0 commit comments