单词接龙
题目描述
单词接龙的规则是:可用于接龙的单词首字母必须要前一个单词的尾字母相同;当存在多个首字母相同的单词时,取长度最长的单词,如果长度也相等,则取字典序最小的单词;已经参与接龙的单词不能重复使用。
现给定一组全部由小写字母组成单词数组,并指定其中的一个单词作为起始单词,进行单词接龙。请输出最长的单词串,单词串是单词拼接而成,中间没有空格。
输入描述
输入的第一行为一个非负整数,表示起始单词在数组中的索引K,0 <= K < N。
输入的第二行为一个非负整数,表示单词的个数N。
接下来的N行,分别表示单词数组中的单词。
输出描述
输出一个字符串,表示最终拼接的单词串。
示例1
输入
0
6
word
dd
d
dc
dword
d
输出
worddworddc
示例2
输入
4
6
word
dd
da
dc
dword
d
输出
dwordda
代码:python
def function():
index = int(input())
num = int(input())
words = []
for i in range(num):
words.append(input())
res = words[index]
end_alpha = res[-1]
words.remove(words[index])
words = sort_words(words, end_alpha)
while True:
if len(words) == 0:
break
if not words[0].startswith(end_alpha):
break
res += words[0]
words.pop(0)
end_alpha = res[-1]
words = sort_words(words, end_alpha)
print(res)
def sort_words(words, end_alpha):
l = len(words)
for i in range(l-1):
for j in range(i+1, l):
if words[i].startswith(end_alpha):
if words[j].startswith(end_alpha):
if len(words[i]) == len(words[j]):
if words[i] > words[j]:
tmp = words[i]
words[i] = words[j]
words[j] = tmp
elif len(words[i]) < len(words[j]):
tmp = words[i]
words[i] = words[j]
words[j] = tmp
else:
tmp = words[i]
words[i] = words[j]
words[j] = tmp
else:
if words[j].startswith(end_alpha):
tmp = words[i]
words[i] = words[j]
words[j] = tmp
return words
if __name__ == '__main__':
function()