给定一个字符串s,s包括以空格分隔的若干个单词,请对s进行如下处理后输出:
1、单词内部调整:对每个单词字母重新按字典序排序
2、单词间顺序调整:
1)统计每个单词出现的次数,并按次数降序排列
2)次数相同,按单词长度升序排列
3)次数和单词长度均相同,按字典升序排列
请输出处理后的字符串,每个单词以一个空格分隔。
输入描述
一行字符串,每个字符取值范围:[a-zA-z0-9]以及空格,字符串长度范围:[1,1000]
输出描述
输出处理后的字符串
用例
输入 | This is an apple |
输出 | an is This aelpp |
说明 | 无 |
,每个单词以一个空格分隔。
def sort_words(s):
# 首先将字符串s转换为单词列表
words = s.split()
# 对每个单词进行字典序排序
words = [''.join(sorted(word)) for word in words]
# 统计每个单词出现的次数
count_dict = {}
for word in words:
if word not in count_dict:
count_dict[word] = 1
else:
count_dict[word] += 1
# 将单词按照出现次数和长度进行排序
words = sorted(words, key=lambda x: (-count_dict[x], len(x), x))
# 将排好序的单词列表组合成字符串并返回
return ' '.join(words)
s = input()
result = sort_words(s)
print(result)