形成最小的数字

时间:2018-06-19 13:04:10

标签: c algorithm

根据输入数字形成最小的数字,例如:

 Input:  991233612
 Output: 12369

不使用数组即可解决此问题的合适算法是什么?采访中有人问我这个问题,但仍然想不出正确的方法。

2 个答案:

答案 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