File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
1
+ # @return an integer
2
+ def atoi (s ):
3
+ n = 0
4
+ sign = 1
5
+ prev = ''
6
+ for i in s :
7
+ if prev == '' or prev == ' ' :
8
+ if i == '+' :
9
+ sign = 1
10
+ elif i == '-' :
11
+ sign = - 1
12
+ elif i >= '0' and i <= '9' :
13
+ n = n * 10 + ord (i ) - ord ('0' )
14
+ elif i != ' ' :
15
+ return 0
16
+ elif prev == '+' or prev == '-' or (prev >= '0' and prev <= '9' ):
17
+ if i < '0' or i > '9' :
18
+ break ;
19
+ n = n * 10 + ord (i ) - ord ('0' )
20
+ if n * sign > 2147483647 :
21
+ return 2147483647
22
+ elif n * sign < - 2147483648 :
23
+ return - 2147483648
24
+ prev = i
25
+ return n * sign
26
+
27
+
28
+ assert atoi ('123' ) == 123
29
+ assert atoi ('-123' ) == - 123
30
+ assert atoi ('0123' ) == 123
31
+ assert atoi ('-0123' ) == - 123
32
+ assert atoi (' 123' ) == 123
33
+ assert atoi (' -123' ) == - 123
34
+ assert atoi (' 123abc' ) == 123
35
+ assert atoi ('2147483648' ) == 2147483647
36
+ assert atoi ('-2147483649' ) == - 2147483648
37
+ assert atoi ('+-123' ) == 0
38
+ assert atoi ('- 123' ) == 0
39
+ assert atoi (' +0 123' ) == 0
You can’t perform that action at this time.
0 commit comments