Skip to content

Instantly share code, notes, and snippets.

@tyler-austin
Created June 1, 2017 22:04
Show Gist options
  • Save tyler-austin/4b487b13bc74470a9d25e5d0a855c277 to your computer and use it in GitHub Desktop.
Save tyler-austin/4b487b13bc74470a9d25e5d0a855c277 to your computer and use it in GitHub Desktop.
Code Fights - palindromeRearranging

Given a string, find out if its characters can be rearranged to form a palindrome.

Example

For inputString = "aabb", the output should be
palindromeRearranging(inputString) = true.

We can rearrange "aabb" to make "abba", which is a palindrome.

Input/Output

  • [time limit] 4000ms (py3)

  • [input] string inputString

    • A string consisting of lowercase English letters.

    Guaranteed constraints:

    1 ≤ inputString.length ≤ 50.
    
  • [output] boolean

    • true if the characters of the inputString can be rearranged to form a palindrome, false otherwise.
class PalindromeRearranging:
@classmethod
def palindrome_rearranging(cls, data: str):
unique = set(data)
num_odd_occur = 0
for c in unique:
if data.count(c) % 2 != 0:
num_odd_occur += 1
if num_odd_occur > 1:
return False
return True
def palindromeRearranging(data: str):
unique = set(data)
num_odd_occur = 0
for c in unique:
if data.count(c) % 2 != 0:
num_odd_occur += 1
if num_odd_occur > 1:
return False
return True
import unittest
from palindrome_rearranging import PalindromeRearranging
class TestPalindromeRearranging(unittest.TestCase):
def test_1(self):
s = 'aabb'
result = PalindromeRearranging.palindrome_rearranging(s)
self.assertTrue(result)
def test_2(self):
s = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabc'
result = PalindromeRearranging.palindrome_rearranging(s)
self.assertFalse(result)
def test_3(self):
s = 'abbcabb'
result = PalindromeRearranging.palindrome_rearranging(s)
self.assertTrue(result)
def test_4(self):
s = 'zyyzzzzz'
result = PalindromeRearranging.palindrome_rearranging(s)
self.assertTrue(result)
def test_5(self):
s = 'z'
result = PalindromeRearranging.palindrome_rearranging(s)
self.assertTrue(result)
def test_6(self):
s = 'zaa'
result = PalindromeRearranging.palindrome_rearranging(s)
self.assertTrue(result)
def test_7(self):
s = 'abca'
result = PalindromeRearranging.palindrome_rearranging(s)
self.assertFalse(result)
if __name__ == '__main__':
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment