Question
Given a non-negative integer, you could swap two digits at most once to get the maximum valued number. Return the maximum valued number you could get.
Example 1:
Input: 2736
Output: 7236
Explanation: Swap the number 2 and the number 7.
Example 2:
Input: 9973
Output: 9973
Explanation: No swap.
Note:
* The given number is in the range [0, 108].
问题解析:
给定非空非负整数,最多交换其中的两个数字,得到最大的整数,返回最大整数。
Answer
Solution 1:
个人解决方案:
- 首先以例子分析要交换的特性,我们会发现,当整数中的所有数字均按照非递增的顺序排序,那么这个整数就是最大整数,不需要进行交换;
- 所以根据上面的分析,我们需要寻找整数中数字出现不符合非递增规则的分裂点,记录违规的分裂点;
- 在分裂点的后半部分寻找最大的数字,并且位置越靠后的数字相对前面与其相等的前面的数字交换的意义更大,也就是我们要求寻找<