2384. Largest Palindromic Number

Medium


You are given a string num consisting of digits only.

Return the largest palindromic integer (in the form of a string) that can be formed using digits taken from num. It should not contain leading zeroes.

Notes:

  • You do not need to use all the digits of num, but you must use at least one digit.
  • The digits can be reordered.

 

Example 1:

Input: num = "444947137"
Output: "7449447"
Explanation: 
Use the digits "4449477" from "444947137" to form the palindromic integer "7449447".
It can be shown that "7449447" is the largest palindromic integer that can be formed.

Example 2:

Input: num = "00009"
Output: "9"
Explanation: 
It can be shown that "9" is the largest palindromic integer that can be formed.
Note that the integer returned should not contain leading zeroes.

 

Constraints:

  • 1 <= num.length <= 105
  • num consists of digits.




 class Solution:
    def largestPalindromic(self, num: str) -> str:
        # counting the number of occurrence of each digit
        count = Counter(num)
        # if the occurrence is multiple of 2, we'll take then in descending order and remove if there any leading zero (0)
        res = "".join(count[i] // 2 * i for i in '9876543210').lstrip("0")
        # taking the max of the odd number(s) of occurrence of digit
        mid = max(count[i]%2 * i for i in count)
        return (res+mid+res[::-1]) or "0"

Random Note


Pythonic Time Complexity Wiki

Important to remember