Skip to content

Commit 292d132

Browse files
committed
add reverse_digits_of_number
1 parent 2c6c182 commit 292d132

File tree

5 files changed

+108
-0
lines changed

5 files changed

+108
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
""" Reversing Digit by Digit """
2+
def reverse_digits(n: int) -> int:
3+
"""
4+
>>> reverse_digits(1234)
5+
4321
6+
>>> reverse_digits(0)
7+
0
8+
>>> reverse_digits(1000)
9+
1
10+
>>> reverse_digits(987654321)
11+
123456789
12+
"""
13+
reversed_number = 0
14+
while n > 0:
15+
digit = n % 10
16+
reversed_number = reversed_number * 10 + digit
17+
n //= 10
18+
return reversed_number
19+
if __name__ == "__main__":
20+
from doctest import testmod
21+
testmod(verbose=True)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
""" Using rescursion """
2+
3+
4+
def reverse_digits(n: int, reversed_number: list[int], base_position: list[int]) -> int:
5+
"""
6+
>>> reverse_number = [0] # must be [0]
7+
>>> base_position = [1] # must be [1]
8+
>>> reverse_digits(1234, reverse_number, base_position)
9+
4321
10+
>>> reverse_number = [0] # must be [0]
11+
>>> base_position = [1] # must be [1]
12+
>>> reverse_digits(0, reverse_number, base_position)
13+
0
14+
>>> reverse_number = [0] # must be [0]
15+
>>> base_position = [1] # must be [1]
16+
>>> reverse_digits(1000, reverse_number, base_position)
17+
1
18+
>>> reverse_number = [0] # must be [0]
19+
>>> base_position = [1] # must be [1]
20+
>>> reverse_digits(987654321, reverse_number, base_position)
21+
123456789
22+
"""
23+
if n > 0:
24+
reverse_digits(n // 10, reversed_number, base_position)
25+
reversed_number[0] += (n % 10) * base_position[0]
26+
base_position[0] *= 10
27+
return reversed_number[0]
28+
29+
30+
if __name__ == "__main__":
31+
from doctest import testmod
32+
33+
testmod(verbose=True)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"""Using String"""
2+
3+
4+
def reverse_digits(n: int) -> int:
5+
"""
6+
>>> reverse_digits(1234)
7+
4321
8+
>>> reverse_digits(0)
9+
0
10+
>>> reverse_digits(1000)
11+
1
12+
>>> reverse_digits(987654321)
13+
123456789
14+
"""
15+
s: str = str(n)
16+
digits: list[str] = list(s)
17+
digits.reverse()
18+
reversed_number = int("".join(digits))
19+
20+
return reversed_number
21+
22+
if __name__ == "__main__":
23+
from doctest import testmod
24+
25+
testmod(verbose=True)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
""" Using String and Slicing in Python """
2+
3+
4+
# for python only
5+
def reverse_digits_2(n: int) -> int:
6+
"""
7+
>>> reverse_digits_2(1234)
8+
4321
9+
>>> reverse_digits_2(0)
10+
0
11+
>>> reverse_digits_2(1000)
12+
1
13+
>>> reverse_digits_2(987654321)
14+
123456789
15+
"""
16+
s: str = str(n)
17+
s_reversed: str = s[::-1]
18+
reversed_number = int(s_reversed)
19+
return reversed_number
20+
21+
if __name__ == "__main__":
22+
from doctest import testmod
23+
24+
testmod(verbose=True)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
## reverse_digits_of_number Method
2+
- Reversing Digit by Digit
3+
- Using rescursion
4+
- Using String
5+
- Using String and Slicing in Python

0 commit comments

Comments
 (0)