File tree 2 files changed +27
-2
lines changed
data_structures/binary_tree
2 files changed +27
-2
lines changed Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ class Node:
5
5
"""
6
6
A Node has data variable and pointers to Nodes to its left and right.
7
7
"""
8
+
8
9
def __init__ (self , data : int ) -> None :
9
10
self .data = data
10
11
self .left : Optional [Node ] = None
Original file line number Diff line number Diff line change @@ -10,11 +10,20 @@ def num_digits(n: int) -> int:
10
10
5
11
11
>>> num_digits(123)
12
12
3
13
+ >>> num_digits(0)
14
+ 1
15
+ >>> num_digits(-1)
16
+ 1
17
+ >>> num_digits(-123456)
18
+ 6
13
19
"""
14
20
digits = 0
15
- while n > 0 :
21
+ n = abs (n )
22
+ while True :
16
23
n = n // 10
17
24
digits += 1
25
+ if n == 0 :
26
+ break
18
27
return digits
19
28
20
29
@@ -27,8 +36,14 @@ def num_digits_fast(n: int) -> int:
27
36
5
28
37
>>> num_digits_fast(123)
29
38
3
39
+ >>> num_digits_fast(0)
40
+ 1
41
+ >>> num_digits_fast(-1)
42
+ 1
43
+ >>> num_digits_fast(-123456)
44
+ 6
30
45
"""
31
- return math .floor (math .log (abs (n ), 10 ) + 1 )
46
+ return 1 if n == 0 else math .floor (math .log (abs (n ), 10 ) + 1 )
32
47
33
48
34
49
def num_digits_faster (n : int ) -> int :
@@ -40,6 +55,12 @@ def num_digits_faster(n: int) -> int:
40
55
5
41
56
>>> num_digits_faster(123)
42
57
3
58
+ >>> num_digits_faster(0)
59
+ 1
60
+ >>> num_digits_faster(-1)
61
+ 1
62
+ >>> num_digits_faster(-123456)
63
+ 6
43
64
"""
44
65
return len (str (abs (n )))
45
66
@@ -133,3 +154,6 @@ def benchmark() -> None:
133
154
medium_num = 1125899906842624
134
155
large_num = 1267650600228229401496703205376
135
156
benchmark ()
157
+ import doctest
158
+
159
+ doctest .testmod ()
You can’t perform that action at this time.
0 commit comments