给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足:
换句话说,num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。
注意:
示例:


1)对数字数位分割,得到 list 后排序,两个数字分别:
2)当我们将给定的 num 分成 num1 和 num2 时,num1 中的数字应该是单调递增的。否则,例如 nums1=1243,我们将 4 和 3 交换可以得到更小的值。同理,nums2 中的数字也应该是单调递增的。
因此,我们就可以得出最小和的分割方法:
class Solution:
def splitNum(self, num: int) -> int:
stnum = "".join(sorted(str(num)))
num1, num2 = int(stnum[::2]), int(stnum[1::2])
return num1 + num2
貌似没有对前导0进行限制,比如现在的答案是:
力扣(LeetCode)是领扣网络旗下专注于程序员技术成长和企业技术人才服务的品牌。源自美国硅谷,力扣为全球程序员提供了专业的IT技术职业化提升平台,有效帮助程序员实现快速进步和长期成长。此外,力扣(LeetCode)致力于解决程序员技术评估、培训、职业匹配的痛点,逐步引领互联网技术求职和招聘迈向专业化。
【1】https://leetcode.cn/problems/split-with-minimum-sum/?envType=daily-question&envId=2023-10-09