← All solutions
July 28Medium

Smallest palindromic rearrangement i

  • String
  • Sorting
  • Counting Sort

Problem

You are given a palindromic string s. Return the lexicographically smallest palindromic permutation of s.

Solution

class Solution:
    def smallestPalindrome(self, s: str) -> str:
        letters = defaultdict(int)
        for letter in s:
            letters[letter] += 1
        a = ord("a")
        res = ""
        remaining = None
        for i in range(26):
            letter = chr(a+i)
            while letters[letter]:
                if letters[letter] == 1:
                    remaining = letter
                    letters[letter] = 0
                else:
                    res += letter
                    letters[letter] -= 2
        return res + (remaining or "") + res[::-1]