python3精要 5 最長公共字首Trie樹

2021-09-27 13:16:12 字數 2740 閱讀 5306

單詞查詢樹trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串(但不僅限於字串),所以經常被搜尋引擎系統用於文字詞頻統計。

python函式引用傳遞

列表、字典、集合:按引用傳入函式

def change(mylist):

mylist[0:2]=[2,3]

mylist = [11,22,33,44]

print()

change(mylist)

print(mylist)

[2, 3, 33, 44]

#node:[計數,子樹]

def refreshtrienode(prevchar,nextchar,nownode,isendchar):

if prevchar in nownode.keys() and (not nownode[prevchar][1] is none):

if nextchar in nownode[prevchar][1].keys():

if isendchar:

nownode[prevchar][1][nextchar][0]+=1

newnode=nownode[prevchar][1]

else:

if isendchar:

newnodedata=[1,none]

else:

newnodedata=[0,none]

nownode[prevchar][1][nextchar]=newnodedata

newnode=nownode

else:

if isendchar:

newnode=

else:

newnode=

nownode[prevchar][1]=newnode

return newnode,nextchar

def searchtrienode(prevchar,nextchar,nownode,isendchar):

if (not nownode is none) and prevchar in nownode.keys():

newnode=nownode[prevchar][1]

if not newnode is none:

if nextchar in newnode.keys():

if isendchar:

if newnode[nextchar][0]>0:

return newnode,nextchar,false,true,newnode[nextchar][0]#,,continue,finded

else:

return newnode,nextchar,true,false,none#,,continue,finded

return none,none,false,false,none#,,continue,finded

#code:劉興,

def test():

words=["ab","ab","ad","adcd","add"]

print(words)

rootnode=

for word in words:

node=rootnode

prevchar="root"

for i in range(len(word)):

if i==len(word)-1:

isendchar=true

else:

isendchar=false

char=word[i]

node,prevchar=refreshtrienode(prevchar,char,node,isendchar)

print("===")

print(rootnode)

print("---")

words=["aa","ab","addd","abc","ad","adcd"]

for word in words:

node=rootnode

prevchar="root"

for i in range(len(word)):

if i==len(word)-1:

isendchar=true

else:

isendchar=false

char=word[i]

node,prevchar,iscontinue,isfind,wc=searchtrienode(prevchar,char,node,isendchar)

if not iscontinue:

if isfind:

print(f"找到,共有個。")

else:

print(f"找不到")

break

test()

['ab', 'ab', 'ad', 'adcd', 'add']

===], 'd': [1, none]}]}]}]}

---找不到aa

找到ab,共有2個。

找不到addd

找不到abc

找到ad,共有1個。

找到adcd,共有1個。

演算法題2 最長公共字首(python3實現)

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母a z。def longestcommonpref...

最長公共字首 python

class solution def longestcommonprefix self,strs list str str ifnot strs return strs.sort 這應該是最重要的一步了,給陣列中的各個字串排序,排序之後的第乙個最短,最後乙個最長,所以直接拿第乙個和最後乙個比較就好了...

Python 最長公共字首

最長公共字首 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母 a z 方法1 主要思路是取出所有...