思路:
- 拆分 num 的每一位数字,将他们排序。
- 最大的两个放在个位,其次两个放十位,以此类推。注意并不需要重新组合出 num1 和 num2 ,他只要和即可。
- 优化,可以不使用排序,因为只有 0 到 9 一共十个数字,只需要统计它们出现的次数,然后从 9 开始计算即可。
class Solution:
def splitNum(self, num: int) -> int:
l = []
while num > 0:
l.append(num % 10)
num //= 10
l.sort(reverse=True)
ans = 0
for i in range(len(l)):
ans += l[i]*10**(i // 2)
return ans