python数组拼接字符串_Python练习题——数组拼接

该博客提供了多种Python实现方式,将输入的正整数数组拼接成最小的数字。通过字符串比较和数组排序,找到拼接后数字最小的排列组合。示例包括使用双重循环、自定义比较函数、`itertools.permutations`以及`functools.cmp_to_key`等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#

# 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。

#

# 示例 1:

# 输入: [10,2]

# 输出: "102"

#

# 示例2:

# 输入: [3,30,34,5,9]

# 输出: "3033459"

# #1

# class Solution:

# def minNumber(self, nums):

# nums_str=[str(i) for i in nums]#数组数字转字符串

# for i in range(len(nums)-1):

# for j in range(i+1,len(nums)):

# if nums_str[i]+nums_str[j]>nums_str[j]+nums_str[i]:#字符串拼接比较大小

# nums_str[i],nums_str[j]=nums_str[j],nums_str[i]#根据拼接比较结果,小数在前大数在后

# output=''.join(nums_str)#拼接字符串

# return output

# # nums=[3,30,34,5,9]

# nums=[58,7,3,30,34]

# s=Solution()

# output=s.minNumber(nums)

# print(output)

#

#

# #2

# class cmpSmaller(str):

# def __lt__(self, y):#富比较方法

# # print('self=',self)

# # print('y=',y)

# return self + y < y + self # 字符串拼接比较(两两比较)

# # 按由小到大来排列

# class Solution:

# def minNumber(self, nums):

# res=sorted(map(str, nums),key=cmpSmaller)

# smallest = ''.join(res)

# return smallest

# nums=[58,7,3,30,34]

# s=Solution()

# output=s.minNumber(nums)

# print(output)

#

#

# #3

# import itertools

# def fun1(a):

# # itertools.permutations(iterable, r)

# # 第一个参数为可迭代对象,第二个参数为参与排列的元素的个数,r的默认值为可迭代对象的长度,即全排列

# # 返回一个元素类型为元组的迭代器

# b = []

# full_permutation = list(itertools.permutations(a,len(a)))

# # print(full_permutation)

# for i in full_permutation:

# b.append(''.join([str(n) for n in i]))

# return sorted(b)[0]

# a = [3,31,34,5,9]

# res = fun1(a)

# print(res)

#

#

# #4

# import functools

# def minNumber(nums):

# def sort_rule(x, y):

# a, b = x + y, y + x

# if a > b:

# return 1

# elif a < b:

# return -1

# else:

# return 0

# strs = [str(num) for num in nums]

# strs.sort(key=functools.cmp_to_key(sort_rule),reverse=False)

# return ''.join(strs)

# print(minNumber([3,31,34,5,112]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值