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%,不知道哪里出了问题,希望大家指正