问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python实现,输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接

发布网友 发布时间:2022-04-24 22:27

我来回答

4个回答

热心网友 时间:2023-10-13 08:13

你的例子第一列全是 3,我给个例子吧:[321, 32, 3, 4],输出该是 321,32,3,4。

第一个数越大,则应该排在后面,毕竟 4XXX 是比 3XXX 大的。

setp 1: [0][1][2]
         3  2  1
         3  2
         3
         4
排序第 0 列,越大的排越后。
ret = [?, ?, ?, 4]

setp 2: [0][1][2]
         3  2  1
         3  2
         3 <3>     <- 补位 3,因为 3 是同 3 组第一个元素。
排序第 1 列,越大的排越后。
ret = [?, ?, 3, 4]

setp 3: [0][1][2]
         3  2  1
         3  2 <3>  <- 补位 3,因为 3 是同 3 组第一个元素。
排序第 2 列,越大的排越后。323 比 321 大,所以……
ret = [?, 32, 3, 4]

只剩一个,那个排第一:
ret = [321, 32, 3, 4]

以上就是基本思路了。综上可得:

1. 先按 [0] 列分组:

2. 组中每个数都补位到同样长度,然后再排序。

完整代码:

def joinmin(ls):
    groups = {}
    for item in ls:
        prefix = item
        n = 0
        while prefix > 10:
            prefix //= 10
            n += 1
        groups.setdefault(prefix, []).append([item, n])
    sorted_keys = list(sorted(groups))
    ret = 0
    for prefix in sorted_keys:
        items = groups[prefix]
        max_n = max([t[1] for t in items])
        presort_items = []
        for item, item_n in items:
            padding = item
            n = item_n
            while max_n > n:
                padding *= 10
                padding += prefix
                n += 1
            presort_items.append((padding, item, item_n))
        for _, item, n in sorted(presort_items):
            while n > -1:
                ret *= 10
                n -= 1
            ret += item
    return ret

不是看在你的分上答的,不过这种小题目蛮有趣的。

热心网友 时间:2023-10-13 08:13

import itertools

data = {3, 32, 321, 3432, 435, 64, 324}     # 最小组合数结果 321323243343243564
# data = {3, 32, 321}     # 最小组合数结果    321323

# 1、首先 data 是一个 set 集合,需要将其转换为 列表进行排序    sorted(list(data)))
# 2、然后通过python的内置库 itertools.permutations   进行排列组合
x = list(itertools.permutations(sorted(list(data))))

# 3、将排列组合出来的数先转为字符串
# 4、然后通过 join 将其组合成一个字符串
# 5、将组合出的数字字符串加入新的 set 集合中
new_data = set()
for i in x:
    n_str = "".join([str(n) for n in i])
    new_data.add(n_str)

# 6、将新的 set 集合转换成列表进行排序,取第一个就是最小的
min_n = sorted(list(new_data))[0]
print(min_n)    # 7、输出最小排列组合的值

热心网友 时间:2023-10-13 08:14

用int会越界的,所以先转成str

数字拼接满足结合律,所以只需要保证每两个数拼接后更小就行了,即ij?ji。因此,可以使用冒泡排序,但是比较的条件变成'i'+'j' > 'j' + 'i',如果满足就交换。

输出用print(''.join(list))即可,python打印字符串的时候不会带''的。

代码是:

# -*- coding:utf-8 -*-

class Solution:

def PrintMinNumber(self,numbers):

if not numbers:

return ''

n = len(numbers)

for i in range(n):

numbers[i] = str(numbers[i])

print(numbers)

for i in range(n):

for j in range(i+1,n):

if numbers[i] + numbers[j] > numbers[j] + numbers[i]:

numbers[i],numbers[j] = numbers[j],numbers[i]

return ''.join(numbers)

热心网友 时间:2023-10-13 08:14

python中的数组,即使是*数组,貌似都是用的中括号表示吧? 花括号貌似都是针对字典的。

个人以为,可以先将原先的数组转换成列表,利用列表的内置方法排序并拼接后,再转换回去原来的格式。

原始数据,我不知道是什么格式。只是我以为,按照你的说法,跑不出元组、列表、字典等几种格式。这几种格式的转换相对还是比较简单的。

代码就不写了。个人以为这样的做法,应该比较合适。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求电脑玩安卓游戏的方法。步骤。以及所有的文件~谢谢 。有的联系我~ 我在电脑管家软件管理下的鹰击长空2都是解压包 澳洲留学读研申请攻略 澳洲留学申请时间是什么时候 去澳大利亚上大学需要什么手续 澳洲留学申请流程时间如何? 中南财经政法大学保险精算专业介绍 黄福记小吃梅干菜扣肉饼怎么样 如何开一家梅干菜扣肉饼店,成本要多少 在照明行业LED配光曲线图怎么看 各位 如何把数组 [1 1 2 2 3 3 4 5 6] 变成 123 123456 的排序啊 请教EXCEL数组排列? 笔记本电脑散热硅脂多久换一次比较好 笔记本电脑内的散热硅脂能起到什么作用?什么牌子的硅脂好些? 笔记本电脑硅脂 我们应该怎么使用笔记本电脑的导热硅脂呢?如何正确选择导热硅脂? 在数据库设计过程中,在什么阶段建立数据字典? 有几个选项,需求分析阶段... 数据库结构设计包含的数据字典 表结构有哪些 在程序设计开始时,需要写数据字典,具体格式是什么? 数据字典表怎么设计? mysql workbench怎么制作数据字典 谁知道山西朔州的方言? 数据字典是数据库设计哪个阶段的?每个阶段都有什么结果? 山西朔州多大呢? 想问一下商品分类的数据字典设计如何做 山西朔州总共有多少高中?分别有哪些?详细点吧!谢谢 项目开发中 如何设计数据字典? 山西怀仁是不是属于朔州市? 制作mysql数据库,数据字典,一般用什么工具软件? 山西朔州市及城区有多少人口? 求问数组从小到大排序最少交换次数的题目怎么做比较好? java 有3个数组,现在我想把这3个数组排列一下应该怎么写 PHP 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出所有数字的最小的一个 请问这个C++函数的功能是不是将有n个元素的整型数组从大到小排列? 人生到了瓶颈是什么意思? 人生瓶颈期是什么意思 当人生遇到瓶颈如何解决,打破? 怎样突破人生的瓶颈? 怎么解决人生的瓶颈期 遇到了人生瓶颈期怎么办? 你的人生遭遇瓶颈了怎么办? 当遇到人生瓶颈时,你会怎么办? 怎样走出这样的人生瓶颈? 人生遭遇瓶颈该怎么破局? 怎样从一个人生瓶颈走出来? 人生遇到瓶颈怎么办? 古人给你的五个忠告:如何让快速走出人生的“瓶颈期”? 如何走出人生的瓶颈期? 如果生活遇到瓶颈,我该怎么办? 对你来说进入人生瓶颈期怎么办?