📅  最后修改于: 2023-12-03 15:12:46.933000             🧑  作者: Mango
此问题为门|门 IT 2008中的第21个题目,是一道经典的编程题目,涉及到字符串操作和算法。
给定一个字符串,其中只包含大小写字母和数字。请编写一个程序,将其中的数字字母按照从小到大的顺序输出,字母按照字母表顺序排列并忽略大小写。
输入:'daB3Ac3fBc1De'
输出:'aBbc3D3ef'
首先需要把字符串中的数字和字母分离出来,然后对它们进行排序,最后按要求输出即可。
排序可以使用快速排序、归并排序等算法。
def sort_str(s: str) -> str:
nums = []
alpha = []
for val in s:
if val.isdigit():
nums.append(val)
elif val.isalpha():
alpha.append(val)
nums.sort()
alpha.sort(key=lambda x: x.lower())
res = ''
for val in alpha + nums:
res += val
return res
上述代码中,使用 isdigit()
函数和 isalpha()
函数分离出原字符串中的数字和字母,并分别存放在数组 nums
和 alpha
中。对它们分别排序,数字使用 sort()
方法,字母使用 sort()
方法排序,并指定 key
为转小写后的字母,保证大小写不敏感。最后将 alpha
和 nums
按照要求合并,并返回最终结果。
此题考察了对字符串操作和排序算法的掌握,可以使用 Python 内置 sort()
方法和 key
参数来方便地进行排序操作。