-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmake_string_alphabetic.py
More file actions
52 lines (37 loc) · 1.41 KB
/
make_string_alphabetic.py
File metadata and controls
52 lines (37 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#! python
# Removes letter from word to make characters go alphabetically.
# It doesn't work all the time, but is efficient.
import unittest
class TestRemoveLettersAlphabet(unittest.TestCase):
def test_object1(self):
self.assertEqual(letters_to_remove('mateusz'), 3)
def test_object2(self):
self.assertEqual(letters_to_remove('cba'), 2)
def test_object3(self):
self.assertEqual(letters_to_remove('dirt'), 0)
def test_object4(self):
self.assertEqual(letters_to_remove('jablko'), 2)
def test_repeating_letters1(self):
self.assertEqual(letters_to_remove('gabriela'), 5)
def test_repeating_letters2(self):
self.assertEqual(letters_to_remove('banana'), 3)
def test_repeating_letters3(self):
self.assertEqual(letters_to_remove('apple'), 2)
def letters_to_remove(string: str) -> int:
string = list(string)
sorted_string = sorted(string)
letters_removed = 0
remaining_string = ""
for character in sorted_string:
index = string.index(character)
to_remove = string[:index]
letters_removed += len(to_remove)
for letter in to_remove:
string.remove(letter)
sorted_string.remove(letter)
remaining_string += character
string.remove(character)
print(f"[+] Remaining string: {remaining_string}")
return letters_removed
if __name__ == "__main__":
unittest.main()