当前位置: 首页 > 面试经验 >

【华为OD机试2023】字符串重新排序(Python)

优质
小牛编辑
99浏览
2023-03-28

【华为OD机试2023】字符串重新排序(Python)

题目描述:

给定一个字符串s,s包含以空格分隔的若干个单词,请对s进行如下处理后输出:

1、单词内部调整:对每个单词字母重新按字典序排序;

2、单词间顺序调整:

    1)统计每个单词出现的次数,并按次数降序排列;

    2)次数相同时,按单词长度升序排列;

    3)次数和单词长度均相同时,按字典序升序排列。

请输出处理后的字符串,每个单词以一个空格分隔。

输入描述:

一行字符串,每个字符取值范围:[a-zA-Z0-9]以及空格,字符串长度范围:[1, 1000]

输出描述:

重新排序后的字符串,每个单词间隔1个空格,且首尾无空格

示例1

输入:

This is an apple

输出:

an is This aelpp

示例2

输入:

My sister is in the house not in the yard

输出:

in in eht eht My is not adry ehosu eirsst

解题思路:

先把每个单词进行词内排序,构建成新列表,然后按照出现次数、长度和字典序再进行一次排序,输出即可

(这题学到了sorted()函数与匿名函数组合的新写法,不是像之前的题那样返回数字,而是返回元组,自动按照元组元素进行排序)


lst=input().split()
new_lst=[]
for word in lst:
new_word=''.join(sorted(word))
new_lst.append(new_word)
new_new_lst=sorted(new_lst,key=lambda x:(-new_lst.count(x),len(x),[ord(char) for char in x]))
print(' '.join(new_new_lst))

#华为机试,emo了#
 类似资料: