📜  门|门 IT 2008 |问题 21(1)

📅  最后修改于: 2023-12-03 15:12:46.933000             🧑  作者: Mango

门|门 IT 2008 | 问题 21

此问题为门|门 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() 函数分离出原字符串中的数字和字母,并分别存放在数组 numsalpha 中。对它们分别排序,数字使用 sort() 方法,字母使用 sort() 方法排序,并指定 key 为转小写后的字母,保证大小写不敏感。最后将 alphanums 按照要求合并,并返回最终结果。

总结

此题考察了对字符串操作和排序算法的掌握,可以使用 Python 内置 sort() 方法和 key 参数来方便地进行排序操作。