📌  相关文章
📜  国际空间研究组织 | ISRO CS 2020 |问题 10(1)

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

国际空间研究组织 | ISRO CS 2020 |问题 10

题目描述

一个字符串,由大写字母、小写字母、数字和特殊字符组成。现在,你需要把它们按照如下方式排列:所有小写字母排在大写字母前面,所有大写字母排在数字和特殊字符前面,所有数字排在特殊字符前面。请写一个函数实现以上要求。

函数原型
def sort_string(s: str) -> str:
    pass
输入格式
  • s: 长度不超过 100000的字符串。其中可能有小写字母,大写字母,数字和特殊字符。
输出格式
  • 返回按照题目要求排列的字符串。
例子
# 因为小写字母在前,所以先排列所有小写字母
# 然后是大写字母,然后是数字,最后是特殊字符。
assert sort_string('abczABC123X-&^%') == 'abczABC123-&^%X'
解题思路

这道题目首先需要先将字符串中的字符按照规定的分类进行排序,可以使用python中字符串的isalpha()isdigit()isupper()类型方法,这样可以方便的将字符按照类型存储到列表中。最后再按照题目要求拼接即可。

代码实现
def sort_string(s: str) -> str:
    lower_case = []
    upper_case = []
    digit = []
    special = []
    for c in s:
        if c.isalpha():
            if c.islower():
                lower_case.append(c)
            else:
                upper_case.append(c)
        elif c.isdigit():
            digit.append(c)
        else:
            special.append(c)
    return ''.join(sorted(lower_case) + sorted(upper_case) + sorted(digit) + sorted(special))