Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
使用递归实现
words=['giraffe','elephant','ant','tiger','racoon','cat','hedgehog','mouse'] defget_results(_start,_current,_seen): ifall(cin_seenforcinwordsifc[0]==_start[-1]): yield_current else: foriinwords: ifi[0]==_start[-1]: yieldfromget_results(i,_current+[i],_seen+[i]) new_d=[list(get_results(i,[i],[]))[0]foriinwords] final_d=max([iforiinnew_diflen(i)==len(set(i))],key=len)
输出:
['hedgehog','giraffe','elephant','tiger','racoon']
工作原理类似于广度优先搜索,因为只要当前值之前没有被调用,get_results函数就会继续遍历整个列表。函数已经查找过的值被添加到_seen列表中,最终停止递归调用流。这个解决方案也会忽略重复的结果,
words=['giraffe','elephant','ant','ning','tiger','racoon','cat','hedgehog','mouse',] new_d=[list(get_results(i,[i],[]))[0]foriinwords] final_d=max([iforiinnew_diflen(i)==len(set(i))],key=len)
输出:
['ant','tiger','racoon','ning','giraffe','elephant']
到此这篇关于Python排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)的文章就介绍到这了,更多相关Python排序最长英文单词链内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语