def longest_words(words):
tmp_words = [[len(w), w] for w in words]
tmp_words = sorted(tmp_words, key=lambda x: (-1 * x[0], x[1]))
new_words = [w[1] for w in tmp_words]
return new_words
def fc(k, n, words):
# k = int(input())
# n = int(input())
# words = []
use_words = set()
res = ""
# for i in range(n):
# words.append(input().strip())
tmp_word = words[k]
words = [x for x in list(set(words)) if x != tmp_word]
tmp_dict = {}
for i in words:
if i[0] not in tmp_dict:
tmp_dict[i[0]] = [i]
else:
tmp_dict[i[0]].append(i)
for k in tmp_dict:
tmp_dict[k] = longest_words(tmp_dict[k])
print(tmp_dict)
while 1:
if tmp_word not in use_words:
res += tmp_word
use_words.add(tmp_word)
tmp_alpha = tmp_word[-1]
if tmp_alpha in tmp_dict and len(tmp_dict[tmp_alpha]) > 0:
tmp_word = tmp_dict[tmp_alpha].pop(0)
else:
break
else:
break
return res
# 有测试有用例不过
print(fc(0, 10, ['abvce', 'ad', 'ef', 'df', 'f', 'ff', 'fi', 'mh']))
### 单词接龙,单词首字母是上一个单词结尾字母,如果候选词有多个,则选最长的,若长度相同,按字典序选靠前的def longest_words(words): tmp_words = [[len(w), w] for w in words] tmp_words = sorted(tmp_words, key=lambda x: (-1 * x[0], x[1])) new_words = [w[1] for w in tmp_words] return new_word.