53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
import unittest
|
|
|
|
dct = ['a', 'i', 'am', 'not', 'he', 'the', 'they', 'my',
|
|
'alive', 'darkness', 'friend', 'hello']
|
|
|
|
def re_space(s):
|
|
|
|
s = s.lower()
|
|
if s in dct:
|
|
return s
|
|
|
|
ins = s
|
|
keywords = []
|
|
n = len(ins)
|
|
for i in range(n-1, 0, -1):
|
|
j = 0
|
|
while j + i <= n:
|
|
tmp = ins[j:j+i]
|
|
if tmp in dct:
|
|
keywords.append(tmp)
|
|
ins = ins.replace(tmp, '')
|
|
j += 1
|
|
n = len(ins)
|
|
|
|
keywords = sorted(keywords)
|
|
touched = [0] * len(s)
|
|
for keyw in keywords:
|
|
idx = s.find(keyw)
|
|
if touched[idx] == 1:
|
|
continue
|
|
touched[idx:idx + len(keyw) + 1] = [1] * len(keyw)
|
|
s = s.replace(keyw, ' ' + keyw + ' ')
|
|
s = s.replace(' ', ' ')
|
|
|
|
if s[-1] == ' ':
|
|
s = s[:-1]
|
|
if s[0] == ' ':
|
|
s = s[1:]
|
|
return s
|
|
|
|
class Test(unittest.TestCase):
|
|
data = [('iamalive', 'i am alive'),
|
|
('hellodarknessmyfriend', 'hello darkness my friend'),
|
|
('invincibleami', 'i nv i nc i ble am i')]
|
|
|
|
def test_rotate_matrix(self):
|
|
for test_num, expected in self.data:
|
|
actual = re_space(test_num)
|
|
self.assertEqual(actual, expected)
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|