Easy
Given a positive integer num
, split it into two non-negative integers num1
and num2
such that:
num1
and num2
is a permutation of num
.
num1
and num2
is equal to the number of occurrences of that digit in num
.num1
and num2
can contain leading zeros.Return the minimum possible sum of num1
and num2
.
Notes:
num
does not contain any leading zeros.num1
and num2
may differ from the order of occurrence of num
.Example 1:
Input: num = 4325
Output: 59
Explanation: We can split 4325 so that num1
is 24 and num2 is
35, giving a sum of 59. We can prove that 59 is indeed the minimal possible sum.
Example 2:
Input: num = 687
Output: 75
Explanation: We can split 687 so that num1
is 68 and num2
is 7, which would give an optimal sum of 75.
Constraints:
10 <= num <= 109
@Suppress("NAME_SHADOWING")
class Solution {
fun splitNum(num: Int): Int {
var num = num
val ans = IntArray(10)
while (num > 0) {
ans[num % 10]++
num /= 10
}
var num1 = 0
var num2 = 0
for (i in 0..9) {
for (j in 0 until ans[i]) {
if (num1 <= num2) {
num1 = num1 * 10 + i
} else {
num2 = num2 * 10 + i
}
}
}
return num1 + num2
}
}