โ† Back to Sorting Pattern

๐Ÿ“š Largest Number After Digit Swaps by Parity โ€“ Java Cheat Sheet

๐Ÿ“Œ What Is It?

The problem involves rearranging the digits of a number such that the resulting number is the largest possible while maintaining the parity of each digit. Parity means:

The solution involves separating the digits by parity, sorting them in descending order, and reconstructing the number.

๐Ÿงฑ Pattern Template

class Solution {
    public int largestInteger(int num) {
        // Convert the number to a character array
        char[] digits = String.valueOf(num).toCharArray();

        // Separate even and odd digits
        List<Integer> evens = new ArrayList<>();
        List<Integer> odds = new ArrayList<>();

        for (char digit : digits) {
            int d = digit - '0';
            if (d % 2 == 0) {
                evens.add(d);
            } else {
                odds.add(d);
            }
        }

        // Sort even and odd digits in descending order
        evens.sort(Collections.reverseOrder());
        odds.sort(Collections.reverseOrder());

        // Reconstruct the largest number
        StringBuilder result = new StringBuilder();
        int evenIndex = 0, oddIndex = 0;

        for (char digit : digits) {
            int d = digit - '0';
            if (d % 2 == 0) {
                result.append(evens.get(evenIndex++));
            } else {
                result.append(odds.get(oddIndex++));
            }
        }

        return Integer.parseInt(result.toString());
    }
}

๐Ÿ“Š Time Complexity

โœ… Use Cases

๐Ÿ“˜ Common LeetCode Problems

๐Ÿงช Example: Largest Number After Digit Swaps by Parity

Input: num = 65875
Output: 87655

Explanation:
- Even digits: [6, 8]
- Odd digits: [5, 7, 5]
- Rearrange evens: [8, 6]
- Rearrange odds: [7, 5, 5]
- Reconstruct: 87655

๐Ÿ’ก Pro Tips