Skip to content

Commit a28f231

Browse files
author
shangchun
committed
leetcode: atoi
1 parent 06e5333 commit a28f231

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

atoi.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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

0 commit comments

Comments
 (0)