ctci/1. Arrays and strings/1.9. string_rotation.py

42 lines
1.0 KiB
Python

import unittest
from collections import Counter
def rotate_matrix(s1, s2):
if len(s1) != len(s2) or Counter(s1) != Counter(s2):
return 0
if len(s1) < 3 or s1 == s2:
return 1
indexes = [i for i, e in enumerate(s2) if e == s1[0]]
for idx in indexes:
offset = len(s1) - idx
if s2[idx:] == s1[:offset] and s2[:idx] == s1[offset:]:
return 1
return 0
class Test(unittest.TestCase):
'''Test Cases'''
dataT = [('', ''),
('a', 'a'),
('ab', 'ba'),
('waterbottle', 'waterbottle'),
('erbottlewat', 'waterbottle'),
('qwerqwer', 'erqwerqw')]
dataF = [('', 'a'),
('a', 'b'),
('qwerq', 'wreqq')]
def test_rotate_matrix(self):
for test in self.dataT:
res = rotate_matrix(*test)
self.assertTrue(res)
for test in self.dataF:
res = rotate_matrix(*test)
self.assertFalse(res)
if __name__ == "__main__":
unittest.main()