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排序最长英文单词链内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!