找出字串的所有子字串

2021-10-07 18:58:34 字數 1217 閱讀 5116

字首樹實現,遍歷字串。把字串中的每乙個字元都視為字首,用乙個字首樹儲存以每乙個字元為開頭的字串(舉例為『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 ...