字首樹實現,遍歷字串。把字串中的每乙個字元都視為字首,用乙個字首樹儲存以每乙個字元為開頭的字串(舉例為『abbc』)。然後遍歷字首樹,把每個子樹的每一層都作為乙個字串輸出即可。
import copy
class
trienode
(object):
def__init__
(self,word)
: self.word = word
self.dict1 =
str1 =
'abbc'
str1 =
list
(str1)
root = trienode(
none
)def
buildtree
(root,word)
:if word not
in root.dict1:
obj = trienode(word)
root.dict1[word]
=obj
else
: obj = root.dict1[word]
return obj
deffindword
(root,list1)
:if root.dict1:
if root.word:
lenth =
len(list1)
for key in root.dict1:
findword(root.dict1[key]
,list1)
del list1[lenth:]if
len(list1)
>0:
temp = copy.copy(list1)
''.join(temp)
)else
: temp = copy.copy(list1)
''.join(temp)
)res =
for i in
range
(len
(str1)):
head = root
for j in
range
(i,len
(str1)):
head = buildtree(head,str1[j]
)findword(root,
)print
(res)
找出字串
有乙個排過序的字串陣列,但是其中有插入了一些空字串,請設計乙個演算法,找出給定字串的位置。演算法的查詢部分的複雜度應該為log級別。給定乙個string陣列str,同時給定陣列大小n和需要查詢的string x,請返回該串的位置 位置從零開始 測試樣例 a b c d 6,c 返回 3 思路 二分查...
找出字串
有乙個排過序的字串陣列,但是其中有插入了一些空字串,請設計乙個演算法,找出給定字串的位置。演算法的查詢部分的複雜度應該為log級別。給定乙個string陣列str,同時給定陣列大小n和需要查詢的string x,請返回該串的位置 位置從零開始 測試樣例 a b c d 6,c 返回 3 解題思路 二...
找出字串中最長的子串
include includevoid fun1 char a int main void puts bye return 0 void fun1 char p unsigned int i unsigned int len word unsigned int len max 0 unsigned ...