DfFdzbc 2022-05-15 20:21 采纳率: 100%
浏览 66
已结题

Python数字排序问题

Python 输入一个正整数,将该数各位上的数字重新排列,给出比原来数大的最小数和比原来数小的最大数
例:输入2651392641
输出
比原来数大的最小数2651394126
比原来数小的最大数2651392614

  • 写回答

4条回答 默认 最新

  • 鸡蛋酱$ 2022-05-15 20:44
    关注
    
    from collections import Counter
    
    
    class Solution:
        def __init__(self):
            pass
    
        def sort_max(self, num: int) -> int:
            """
            :param num:
            :return:
            """
            num_count = Counter(str(num))
            while True:
                num += 1
                buffer_json = Counter(str(num))
                if buffer_json == num_count:
                    return num
    
        def sort_min(self, num: int) -> int:
            """
            :param num:
            :return:
            """
            num_count = Counter(str(num))
            while True:
                num -= 1
                buffer_json = Counter(str(num))
                if buffer_json == num_count:
                    return num
    
    
    if __name__ == '__main__':
        st = 2651392641
        U = Solution()
        print("原数字:", st)
        the_max = U.sort_max(st)
        print("较大:", the_max)
        the_min = U.sort_min(st)
        print("较小:", the_min)
    
    

    img


    对每个数字计数,然后将原来的数字递加,或者递减,第一个满足数字哈希表相等的就是最接近的极值,我的这个做法技术含量不大.........你可以直接提取每一位数字,我用的字符串转换

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月23日
  • 已采纳回答 5月15日
  • 创建了问题 5月15日