1 题目
小A最近在努力学习英语。小A有一本生词本,专门用来记录见到的生词。每次小A看到一个自己不认识的单词时,就会把这个生词抄写到生词本上。经过几个月的学习之后,小A想对这个生词本上的单词进行整理。由于小A并不能保证生词抄写一遍后就记下来,因此小A可能会把一个已经记录在生词本上的单词当做不认识的往上写(即一个单词可能在生词本上出现多次)。小A希望把生词本上的单词去重,并且按字典序进行排序,然后排好版打印出来。打印排版的要求是:单词去重后按字典序从小到大的顺序排,相邻的两个单词用一个空格隔开,尽量写在同一行,且每一行至多只能有50个字符(包含空格)。单词在不能隔行写,即如果写下某个单词会超出一行的字符数限制,那么必须将这个单词整个写到下一行的开头。现在将小A若干天以来的记录的生词给你,请你帮他按照要求进行整理和排版。字典序:对两个字符串从左到右进行逐字符比较,比较过程中,一旦发现某一对被比较的字符之间不相等时,这一对字符的大小关系即为这一对字符串的大小关系。比较过程中,一旦出现某一个字符串的所有字符都已经经过比较,而另一字符串还存在未被比较的字符时,较短的字符串更小。所有字符串内的字符都被发现相等,则这两个字符串相等。例如:”abc”<”ba”, “bbc”>”abc”, “ab”<”abc”。
示例1:
样例输入
2
abandon huhuhuh muhah lalala english language study learn
abandon learn样例输出
abandon english huhuhuh lalala language learn
muhah study
示例2:
输入样例
1
abandon huhuhuh muha lalala english language study learn
输出样例
abandon english huhuhuh lalala language learn muha
study
2 Python实现
m = int(input())
words = []
while 1:
s = input()
if s != "":
words.extend(s.split())
else:
break
words2 = list(set(words))
words2.sort()
n = 0
for w in words2:
l = n+len(w)
if l <=50:
print (w,end=' ' )
n += len(w)+1
else:
print('\n{}'.format(w),end=' ')
n = 0
这个代码通过了仅为9%,不知道哪里出了问题,希望大家指正