题目:
在给定字符串中找出单词(“单词”由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格、问号、数字等等;另外单个字母不算单词)
找到单词后,按照长度进行降序排序(排序时如果长度相同,则按出现的顺序进行排列),然后输出到一个新的字符串中。如果某个单词重复出现多次,则只输出一次;如果整个输入的字符串中没有找到单词,请输出空串。 输出的单词之间使用一个“空格”隔开,最后一个单词后不加空格。
import re
def extract_words(input_str):
words_dict = {}
# 使用正则表达式提取单词
words = re.findall(r'\b[a-zA-Z]{2,}\b', input_str)
# 全部单词:words = re.findall(r'\b[a-zA-Z]+\b', input_str)
# 统计单词出现次数和顺序
for i, word in enumerate(words):
if word not in words_dict:
words_dict[word] = (len(word), i)
return words_dict
def sort_and_output(words_dict):
sorted_words = sorted(words_dict.items(), key=lambda x: (-x[1][0], x[1][1]))
output_str = ' '.join(word[0] for word in sorted_words)
return output_str
def find_unique_words(input_str):
words_dict = extract_words(input_str)
if not words_dict:
return ""
output_str = sort_and_output(words_dict)
return output_str
input_str =input()
output_str = find_unique_words(input_str)
print(output_str)