LeetCode in Kotlin

3517. Smallest Palindromic Rearrangement I

Medium

You are given a palindromic string s.

Return the lexicographically smallest palindromic permutation of s.

Example 1:

Input: s = “z”

Output: “z”

Explanation:

A string of only one character is already the lexicographically smallest palindrome.

Example 2:

Input: s = “babab”

Output: “abbba”

Explanation:

Rearranging "babab""abbba" gives the smallest lexicographic palindrome.

Example 3:

Input: s = “daccad”

Output: “acddca”

Explanation:

Rearranging "daccad""acddca" gives the smallest lexicographic palindrome.

Constraints:

Solution

class Solution {
    fun smallestPalindrome(s: String): String {
        val n = s.length
        val m = n / 2
        if (n == 1 || n == 2) {
            return s
        }
        val fArr = s.substring(0, m).toCharArray()
        fArr.sort()
        var f = String(fArr)
        val rev = StringBuilder(f).reverse()
        if (n % 2 == 1) {
            f += s[m]
        }
        return f + rev
    }
}