45 lines
1015 B
Python
45 lines
1015 B
Python
import unittest
|
|
|
|
def pal_perm(s):
|
|
s = s.lower()
|
|
|
|
if len(s) <= 1:
|
|
return True
|
|
if len(s) == 2:
|
|
return s[0] == s[1]
|
|
|
|
freq = {}
|
|
flag = 0
|
|
for char in s:
|
|
# if not a letter
|
|
if ord(char) not in range(65, 91) and ord(char) not in range(97, 123):
|
|
s.replace(char, '')
|
|
|
|
if char not in freq:
|
|
freq[char] = 1
|
|
flag += 1
|
|
else:
|
|
freq[char] += 1
|
|
if freq[char] % 2 == 0:
|
|
flag -= 1
|
|
else:
|
|
flag += 1
|
|
return flag <= 1
|
|
|
|
|
|
class Test(unittest.TestCase):
|
|
dataT = ['', 'a', 'aa', 'asddsa', 'asdfdsa', 'asdadsa', 'aaaaa', 'aaaa']
|
|
dataF = ['as', 'ane', 'adsa', 'assdadsa']
|
|
|
|
def test_unique(self):
|
|
for test in self.dataT:
|
|
res = pal_perm(test)
|
|
self.assertTrue(res)
|
|
|
|
for test in self.dataF:
|
|
res = pal_perm(test)
|
|
self.assertFalse(res)
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|