Back to Month
MEDIUM 28 Jul 2026 View on LeetCode

3517. Smallest Palindromic Rearrangement I

</> Solution

class Solution {
    public String smallestPalindrome(String s) {
        int[] freq = new int[26];
        for (char c : s.toCharArray()) {
            freq[c - 'a']++;
        }
        StringBuilder left = new StringBuilder();
        String middle = "";
        for (int i = 0; i < 26; i++) {
            while (freq[i] >= 2) {
                left.append((char) ('a' + i));
                freq[i] -= 2;
            }
            if (freq[i] == 1) {
                middle = String.valueOf((char) ('a' + i));
            }
        }
        StringBuilder right = new StringBuilder(left).reverse();
        return left.toString() + middle + right.toString();
    }
}

TIME COMPLEXITY

O(n)

SPACE COMPLEXITY

O(1)

TOPICS

Greedy String