File tree 1 file changed +76
-0
lines changed
0008-string-to-integer-atoi
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