📅  最后修改于: 2023-12-03 15:07:35.141000             🧑  作者: Mango
一个字符串,由大写字母、小写字母、数字和特殊字符组成。现在,你需要把它们按照如下方式排列:所有小写字母排在大写字母前面,所有大写字母排在数字和特殊字符前面,所有数字排在特殊字符前面。请写一个函数实现以上要求。
def sort_string(s: str) -> str:
pass
# 因为小写字母在前,所以先排列所有小写字母
# 然后是大写字母,然后是数字,最后是特殊字符。
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))