-
Notifications
You must be signed in to change notification settings - Fork 19
/
1.6-String_Compression.py
41 lines (30 loc) · 956 Bytes
/
1.6-String_Compression.py
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
# CTCI 1.6
# String Compression
import unittest
# My Solution
def string_compression(string):
count = 1
result = []
for i in range(1, len(string)):
if string[i] != string[i-1]:
result.append(string[i-1] + str(count))
count = 0
count += 1
result.append(string[i] + str(count))
return min(string, ''.join(result), key=len)
#-------------------------------------------------------------------------------
# CTCI Solution
#-------------------------------------------------------------------------------
#Testing
class Test(unittest.TestCase):
'''Test Cases'''
data = [
('aabcccccaaa', 'a2b1c5a3'),
('abcdef', 'abcdef')
]
def test_string_compression(self):
for [test_string, expected] in self.data:
actual = string_compression(test_string)
self.assertEqual(actual, expected)
if __name__ == "__main__":
unittest.main()