Problem · String
Swap Parity (Data Scientist / Analytics :)
Learn this problemProblem statement
Given a number num, two adjacent digits can be swapped if they have the same parity, meaning both are odd or both are even. For example, (5, 9) have the same parity, but (6, 9) do not.
Find the largest number that can be created. The swap operation can be applied any number of times.
Function
getLargestNumber(num: String) → StringExamples
Example 1
num = "7596801"return = "9758601"Let num = "7596801".
- Swap 5 and 9 -> "7956801"
- Swap 7 and 9 -> "9756801"
- Swap 6 and 8 -> "9758601"
Example 2
num = "0082663"return = "8662003"
The prefix 008266 is one contiguous run of even digits, so it can be reordered into descending order as 866200. The final odd digit 3 cannot cross that even run. Therefore, the largest reachable number is 8662003.
Constraints
- 1 ≤ length of
num≤ 10^5 numconsists of digits 0-9 only.