Skip to main content

Next Palindrome Using Same Digits - Solution & Explanation

HardPremiumFree on FleetCodeTwo PointersString6 min readAsked at: Amazon
Practice this problem

Problem Statement

You are given a numeric string num, representing a very large palindrome.

Return the smallest palindrome larger than num that can be created by rearranging its digits. If no such palindrome exists, return an empty string "".

A palindrome is a number that reads the same backward as forward.

 

Example 1:

Input: num = "1221"
Output: "2112"
Explanation: The next palindrome larger than "1221" is "2112".

Example 2:

Input: num = "32123"
Output: ""
Explanation: No palindromes larger than "32123" can be made by rearranging the digits.

Example 3:

Input: num = "45544554"
Output: "54455445"
Explanation: The next palindrome larger than "45544554" is "54455445".

 

Constraints:

  • 1 <= num.length <= 105
  • num is a palindrome.

Approach Overview

Problem Overview: Given a numeric string that is already a palindrome, return the next larger palindrome that can be formed using exactly the same digits. If no larger palindrome exists, return an empty string. The result must preserve the palindrome structure while using the same multiset of digits.

Approach 1: Generate Permutations and Check Palindromes (Brute Force) (Time: O(n! * n), Space: O(n))

A naive strategy generates permutations of the digits and filters the ones that form valid palindromes. For each permutation, verify the palindrome condition by comparing characters from both ends using two pointers. Track the smallest palindrome strictly larger than the original value. This approach is impractical for large inputs because factorial growth quickly becomes unmanageable. It mainly helps illustrate the constraints of the problem: the palindrome structure means only half the digits actually determine the entire number.

Approach 2: Next Permutation of the First Half (Optimal) (Time: O(n), Space: O(n))

The key observation: a palindrome is fully determined by its first half. The second half is just the mirror of the first. Instead of permuting all digits, operate only on the left half of the string. Extract the first n/2 digits and compute the next lexicographically greater permutation using the standard next-permutation algorithm. This involves scanning from right to left to find the first decreasing element, swapping it with the next larger digit on its right, and reversing the suffix.

Once the next permutation of the left half is formed, rebuild the palindrome. If the length is even, mirror the entire half. If the length is odd, keep the middle digit unchanged and mirror only the left portion around it. Because next permutation guarantees the smallest lexicographically larger arrangement, the constructed palindrome is the next valid one using the same digits.

This method uses simple string manipulation and the classic permutation pattern while maintaining the palindrome invariant. The algorithm scans the string a few times, so the complexity stays linear.

Recommended for interviews: Interviewers expect the next-permutation insight. Recognizing that only the first half controls the palindrome drastically reduces the search space. Mentioning the brute-force idea shows understanding of the constraints, but implementing the half-permutation approach demonstrates strong algorithmic reasoning and familiarity with permutation patterns.

Solution

According to the problem description, we only need to find the next permutation of the first half of the string, then traverse the first half and symmetrically assign values to the second half.

The time complexity is O(n), and the space complexity is O(n). Where n is the length of the string.

Code

Python

Java

C++

Go

TypeScript

Try this approach in the editor →

Detailed Complexity Analysis

ApproachTimeSpaceWhen to Use
Generate All Permutations and Check PalindromesO(n! * n)O(n)Conceptual baseline or very small inputs
Next Permutation of First Half + MirrorO(n)O(n)Optimal solution for interviews and production code

Video Solution

1842. Next Palindrome Using Same Digits (Leetcode Hard) • Programming Live with Larry • 627 views views

Watch 4 more video solutions →

Frequently Asked Questions

Is Next Palindrome Using Same Digits easy or hard?
The problem is rated Hard because the key insight is non-obvious. Many candidates initially attempt full permutations, but the correct solution reduces the search space by applying next permutation only to the first half of the palindrome.
Next Palindrome Using Same Digits Python/Java solution
Implement the next permutation algorithm on the first half of the string. Python typically converts the string to a list for swaps and reversal, while Java uses a char array. After computing the next half, mirror it to build the full palindrome.
How to solve Next Palindrome Using Same Digits in O(n)?
Extract the first half of the palindrome and apply the standard next permutation algorithm. After generating the next lexicographically larger arrangement of that half, rebuild the palindrome by mirroring it. If the string length is odd, keep the middle character unchanged and mirror the rest.
What is the best approach for Next Palindrome Using Same Digits?
The optimal approach computes the next permutation of the first half of the palindrome and mirrors it to rebuild the full number. Because a palindrome is determined entirely by its left half, modifying that portion generates the next valid candidate. This method runs in O(n) time and O(n) space.
Is Next Palindrome Using Same Digits asked at Google/Amazon/Meta?
Palindrome permutation and next-permutation style problems appear frequently in interviews at companies like Google, Amazon, and Meta. Variations test understanding of lexicographic permutations, string manipulation, and two-pointer techniques.
What data structure is used in Next Palindrome Using Same Digits?
The solution mainly uses string or character array manipulation. The next-permutation process operates directly on an array of digits with swaps and reversals, while two-pointer comparisons are used conceptually when reasoning about palindrome structure.
What is the time complexity of Next Palindrome Using Same Digits?
The optimal algorithm runs in O(n) time because it scans the first half of the string to perform the next-permutation steps and then constructs the mirrored palindrome. Space complexity is O(n) due to string manipulation and rebuilding the result.

Ready to solve this problem?

Practice Next Palindrome Using Same Digits with our built-in code editor and test cases.

Practice on FleetCode