Python 排序最長(zhǎng)英文單詞鏈(列表中前一個(gè)單詞末字母是下一個(gè)單詞的首字母)
使用遞歸實(shí)現(xiàn)
words = [’giraffe’, ’elephant’, ’ant’, ’tiger’, ’racoon’, ’cat’, ’hedgehog’, ’mouse’]def get_results(_start, _current, _seen): if all(c in _seen for c in words if c[0] == _start[-1]): yield _current else: for i in words: if i[0] == _start[-1]: yield from get_results(i, _current+[i], _seen+[i])new_d = [list(get_results(i, [i], []))[0] for i in words]final_d = max([i for i in new_d if len(i) == len(set(i))], key=len)
輸出:
[’hedgehog’, ’giraffe’, ’elephant’, ’tiger’, ’racoon’]
工作原理類似于廣度優(yōu)先搜索,因?yàn)橹灰?dāng)前值之前沒(méi)有被調(diào)用,get_results函數(shù)就會(huì)繼續(xù)遍歷整個(gè)列表。函數(shù)已經(jīng)查找過(guò)的值被添加到_seen列表中,最終停止遞歸調(diào)用流。這個(gè)解決方案也會(huì)忽略重復(fù)的結(jié)果,
words = [’giraffe’, ’elephant’, ’ant’, ’ning’, ’tiger’, ’racoon’, ’cat’, ’hedgehog’, ’mouse’,]new_d = [list(get_results(i, [i], []))[0] for i in words]final_d = max([i for i in new_d if len(i) == len(set(i))], key=len)
輸出:
[’ant’, ’tiger’, ’racoon’, ’ning’, ’giraffe’, ’elephant’]
到此這篇關(guān)于Python 排序最長(zhǎng)英文單詞鏈(列表中前一個(gè)單詞末字母是下一個(gè)單詞的首字母)的文章就介紹到這了,更多相關(guān)Python 排序最長(zhǎng)英文單詞鏈內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 不要在HTML中濫用div2. HTML5實(shí)戰(zhàn)與剖析之觸摸事件(touchstart、touchmove和touchend)3. CSS百分比padding制作圖片自適應(yīng)布局4. React優(yōu)雅的封裝SvgIcon組件示例5. Vue如何使用ElementUI對(duì)表單元素進(jìn)行自定義校驗(yàn)及踩坑6. vue前端RSA加密java后端解密的方法實(shí)現(xiàn)7. CSS清除浮動(dòng)方法匯總8. Electron調(diào)用外接攝像頭并拍照上傳實(shí)現(xiàn)詳解9. HTTP協(xié)議常用的請(qǐng)求頭和響應(yīng)頭響應(yīng)詳解說(shuō)明(學(xué)習(xí))10. TypeScript實(shí)現(xiàn)十大排序算法之歸并排序示例詳解
