根据输入数字形成最小的数字,例如:
Input: 991233612
Output: 12369
不使用数组即可解决此问题的合适算法是什么?采访中有人问我这个问题,但仍然想不出正确的方法。
答案 0 :(得分:4)
正如其他人指出的那样,可以对重复项进行排序和删除。但是该算法怎么样(在伪代码中,实现留给读者)?
XmlSerializer
答案 1 :(得分:0)
听起来像这个问题的要点是删除重复的数字,对其余的数字进行升序排序,然后将结果输出为数字。
def minimumNumber(n):
prevDigit = 0
digit = 9
result = 0
foundDigit = true
# repeat while there still are digits left
while foundDigit:
foundDigit = false
num = n
# search for the smallest digit larger than the previous digit
while num > 0:
d = num / 10
num %= 10
# found a digit that matches the constraints
if d < digit and d > prevDigit
digit = d
foundDigit = true
if foundDigit:
# add digit to result
result = result * 10 + d