欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Trie Tree and some DS&Athm sample

系統(tǒng) 1647 0
Trie樹(shù)的定義(轉(zhuǎn))

Trie樹(shù)是一棵度 m ≥ 2 的樹(shù),它的每一層分支不是靠整個(gè)關(guān)鍵碼的值來(lái)確定,而是由關(guān)鍵碼的一個(gè)分量來(lái)確定。

如下圖所示Trie樹(shù),關(guān)鍵碼由英文字母組成。它包括兩類(lèi)結(jié)點(diǎn):元素結(jié)點(diǎn)和分支結(jié)點(diǎn)。元素結(jié)點(diǎn)包含整個(gè)key數(shù)據(jù);分支結(jié)點(diǎn)有27個(gè)指針,其中有一個(gè)空白字符‘b’,用來(lái)終結(jié)關(guān)鍵碼;其它用來(lái)標(biāo)識(shí)‘a(chǎn)’, ‘b’,..., ‘z’等26個(gè)英文字母。

Trie Tree and some DS&Athm sample

在第0層,所有的關(guān)鍵碼根據(jù)它們第0位字符, 被劃分到互不相交的27個(gè)類(lèi)中。

因此,root→brch.link[i] 指向一棵子Trie樹(shù),該子Trie樹(shù)上所包含的所有關(guān)鍵碼都是以第 i 個(gè)英文字母開(kāi)頭。

若某一關(guān)鍵碼第 j 位字母在英文字母表中順序?yàn)?i ( i = 0, 1, ?, 26 ), 則它在Trie樹(shù)的第 j 層分支結(jié)點(diǎn)中從第 i 個(gè)指針向下找第 j+1 位字母所在結(jié)點(diǎn)。當(dāng)一棵子Trie樹(shù)上只有一個(gè)關(guān)鍵碼時(shí),就由一個(gè)元素結(jié)點(diǎn)來(lái)代替。在這個(gè)結(jié)點(diǎn)中包含有關(guān)鍵碼,以及其它相關(guān)的信息,如對(duì)應(yīng)數(shù)據(jù)對(duì)象的存放地址等。

Trie樹(shù)的類(lèi)定義:

const int MaxKeySize = 25; //關(guān)鍵碼最大位數(shù)

typedef struct { //關(guān)鍵碼類(lèi)型
char ch[MaxKeySize]; //關(guān)鍵碼存放數(shù)組
int currentSize; //關(guān)鍵碼當(dāng)前位數(shù)
} KeyType;

class TrieNode { //Trie樹(shù)結(jié)點(diǎn)類(lèi)定義
friend class Trie;
protected:
enum { branch, element } NodeType; //結(jié)點(diǎn)類(lèi)型
union NodeType { //根據(jù)結(jié)點(diǎn)類(lèi)型的兩種結(jié)構(gòu)
struct { //分支結(jié)點(diǎn)
int num; //本結(jié)點(diǎn)關(guān)鍵碼個(gè)數(shù)
TrieNode *link[27]; //指針數(shù)組
} brch;
struct { //元素結(jié)點(diǎn)
KeyType key; //關(guān)鍵碼
recordNode *recptr; //指向數(shù)據(jù)對(duì)象指針
} elem;
}
}

class Trie { //Trie樹(shù)的類(lèi)定義
private:
TrieNode *root, *current;
public:
RecordNode* Search ( const keyType & );
int Insert ( const KeyType & );
int Delete ( const KeyType & );
}

10.3.2 Trie樹(shù)的搜索

為了在Trie樹(shù)上進(jìn)行搜索,要求把關(guān)鍵碼分解成一些字符元素, 并根據(jù)這些字符向下進(jìn)行分支。

函數(shù) Search 設(shè)定 current = NULL, 表示不指示任何一個(gè)分支結(jié)點(diǎn), 如果 current 指向一個(gè)元素結(jié)點(diǎn) elem,則 current→elem.key 是 current 所指結(jié)點(diǎn)中的關(guān)鍵碼。

Trie樹(shù)的搜索算法:

RecordNode* Trie::Search ( const KeyType & x ) {
k = x.key;
concatenate ( k, ‘b’ );
current = root;
int i = 0; //掃描初始化
while ( current != NULL && current→NodeType != element && i <= x.ch[i] ) {
current = current→brch.link[ord (x.ch[i])];
i = i++;
};
if ( current != NULL && current→NodeType == element && current→elem.key == x )
return current→recptr;
else
return NULL;
}

經(jīng)驗(yàn)證,Trie樹(shù)的搜索算法在最壞情況下搜索的時(shí)間代價(jià)是 O(l)。其中, l 是Trie樹(shù)的層數(shù)(包括分支結(jié)點(diǎn)和元素結(jié)點(diǎn)在內(nèi))。

在用作索引時(shí),Trie樹(shù)的所有結(jié)點(diǎn)都駐留在磁盤(pán)上。搜索時(shí)最多做 l 次磁盤(pán)存取。

當(dāng)結(jié)點(diǎn)駐留在磁盤(pán)上時(shí),不能使用C++的指針 (pointer) 類(lèi)型, 因?yàn)镃++不允許指針的輸入 / 輸出。在結(jié)點(diǎn)中的 link 指針可改用整型(integer) 實(shí)現(xiàn)。

10.3.3 在Trie樹(shù)上的插入和刪除

示例:插入關(guān)鍵碼bobwhite和bluejay。
a. 插入 x = bobwhite 時(shí),首先搜索Trie樹(shù)尋找 bobwhite 所在的結(jié)點(diǎn)。
b. 如果找到結(jié)點(diǎn), 并發(fā)現(xiàn)該結(jié)點(diǎn)的 link[‘o’] = NULL。x不在Trie樹(shù)中, 可以在該處插入。插入結(jié)果參看圖。
c. 插入 x = bluejay時(shí),用Trie樹(shù)搜索算法可找到包含有 bluebird 的元素結(jié)點(diǎn),關(guān)鍵碼bluebird 和 bluejay 是兩個(gè)不同的值,它們?cè)诘?個(gè)字母處不匹配。從 Trie樹(shù)沿搜索路徑,在第4層分支。插入結(jié)果參看圖。

在Trie樹(shù)上插入bobwhite和bluejay后的結(jié)果 :

Trie Tree and some DS&Athm sample

示例:考慮在上圖所示Trie樹(shù)中刪除bobwhite。此時(shí),只要將該結(jié)點(diǎn)link[‘o’]置為0 (NULL)即可,Trie樹(shù)的其它部分不需要改變。

考慮刪除 bluejay。刪除之后在標(biāo)記為δ3 的子Trie樹(shù)中只剩下一個(gè)關(guān)鍵碼,這表明可以刪去結(jié)點(diǎn)δ3 ,同時(shí)結(jié)點(diǎn) ρ 向上移動(dòng)一層。對(duì)結(jié)點(diǎn)δ2 和δ1 可以做同樣的工作,最后到達(dá)結(jié)點(diǎn)б。因?yàn)橐鸳?為根的子Trie樹(shù)中有多個(gè)關(guān)鍵碼,所以它不能刪去,令該結(jié)點(diǎn)link[‘l’] = ρ即可。

為便于Trie樹(shù)的刪除, 在每個(gè)分支結(jié)點(diǎn)中設(shè)置了一個(gè) num 數(shù)據(jù)成員,它記載了結(jié)點(diǎn)中子女的數(shù)目。

Trie ,又稱(chēng) 單詞查找樹(shù) ,是一種 樹(shù) 形結(jié)構(gòu),用于保存大量的 字符串 。它的優(yōu)點(diǎn)是:利用字符串的公共 前綴 來(lái)節(jié)約存儲(chǔ)空間。

性質(zhì)

它有3個(gè)基本性質(zhì):

  1. 根節(jié)點(diǎn) 不包含 字符 ,除根節(jié)點(diǎn)外每一個(gè)節(jié)點(diǎn)都只包含一個(gè) 字符
  2. 根節(jié)點(diǎn) 到某一 節(jié)點(diǎn) 路徑 上經(jīng)過(guò)的 字符 連接起來(lái),為該 節(jié)點(diǎn) 對(duì)應(yīng)的 字符串
  3. 每個(gè) 節(jié)點(diǎn) 的所有 子節(jié)點(diǎn) 包含的 字符 都不相同。

例子

這是一個(gè)Trie結(jié)構(gòu)的例子:

在這個(gè)Trie結(jié)構(gòu)中,保存了t、to、te、tea、ten、i、in、inn這8個(gè)字符串,僅占用8個(gè) 字節(jié) (不包括 指針 占用的空間)



問(wèn)題:

一、 一個(gè)文本文件有多行,每行為一個(gè)URL。請(qǐng)編寫(xiě)代碼,統(tǒng)計(jì)出URL中的文件名及出現(xiàn)次數(shù)。

  a) 文件名不包括域名、路徑和URL參數(shù),例如http://www.rs.com/n.op/q/rs?id=1中的文件名是rs。

  b) 部分URL可能沒(méi)有文件名,例如http://www.abc.com/,這類(lèi)統(tǒng)計(jì)為“空文件名”。

  c) 出現(xiàn)在不同URL中的相同文件名視為同一文件名,例如http://www.ceshi.com/hi.php和ftp://ftp.cdef.com/hi.php為同一文件名

  文件內(nèi)容示例如下:

  http://www.test.com/abc/de/fg.php?id=1&url=http://www.test.com/index.html

  http://www.ceshi.com/hi.jsp

  ftp://ftp.ceshi.com/hi.jsp

  http://www.hello.com/cw/hi.jsp?k=8

  http://www.hi.com/jk/l.html?id=1&s=a.html

  http://www.rs.com/n.op/q/rs?id=1

  http://www.abc.com/

二、 一個(gè)簡(jiǎn)單的論壇系統(tǒng),以數(shù)據(jù)庫(kù)儲(chǔ)存如下數(shù)據(jù):

  用戶(hù)名,email,主頁(yè),電話(huà),聯(lián)系地址,發(fā)帖標(biāo)題,發(fā)帖內(nèi)容,回復(fù)標(biāo)題,回復(fù)內(nèi)容。

  每天論壇訪(fǎng)問(wèn)量300萬(wàn)左右,更新帖子10萬(wàn)左右。

  請(qǐng)給出數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì),并結(jié)合范式簡(jiǎn)要說(shuō)明設(shè)計(jì)思路。

三、 現(xiàn)有兩個(gè)文件,

  a)數(shù)據(jù)文件A,格式為:關(guān)鍵詞、IP地址、時(shí)間,記錄條數(shù)為1000萬(wàn)左右,該文件是無(wú)序排列的。

  b)數(shù)據(jù)文件B是關(guān)鍵詞ID到關(guān)鍵詞的對(duì)應(yīng)表文件,格式為:ID、關(guān)鍵詞,記錄條數(shù)在100萬(wàn)左右,也是無(wú)序排列的。該對(duì)應(yīng)表中的記錄是一一對(duì)應(yīng)的,不存在ID或者關(guān)鍵詞重復(fù)的情況。

  要求將數(shù)據(jù)文件A對(duì)應(yīng)的關(guān)鍵詞替換為B中的ID,生成新的數(shù)據(jù)文件C,數(shù)據(jù)文件C的格式為:關(guān)鍵詞ID、IP地址、時(shí)間。

  請(qǐng)?jiān)O(shè)計(jì)一個(gè)程序,實(shí)現(xiàn)上述功能,并分析時(shí)間復(fù)雜度和空間復(fù)雜度。運(yùn)行程序所使用的服務(wù)器的內(nèi)存為1G,硬盤(pán)足夠大。(至少要給出關(guān)鍵算法和設(shè)計(jì)思路)


    
      第一題
    
  
    
        簡(jiǎn)評(píng)
    
  
      百度的主要業(yè)務(wù)是搜索,搜索的基本原理如下
  
    
      
          1.
      
    
    編寫(xiě)爬蟲(chóng)程序到互聯(lián)網(wǎng)上抓取網(wǎng)頁(yè)海量的網(wǎng)頁(yè)。
  
    
      
          2.
      
    
    將抓取來(lái)的網(wǎng)頁(yè)通過(guò)抽取,以一定的格式保存在能快速檢索的文件系統(tǒng)中。
  
    
      
          3.
      
    
    把用戶(hù)輸入的字符串進(jìn)行拆分成關(guān)鍵字去文件系統(tǒng)中查詢(xún)并返回結(jié)果。
  
      由以上
    
      3
    
    點(diǎn)可見(jiàn),字符串的分析,抽取在搜索引擎中的地位是何等重要。
  
      因此,百度的筆試面試題中,出現(xiàn)這樣的題就變得理所當(dāng)然了。
    
      

  以下是該題的 java 實(shí)現(xiàn),代碼如下:

importjava.net. * ;
importjava.io.
* ;
importjava.util.
* ;

/**/ /* *
*@authortzy
*在j2sdk1.4.2下測(cè)試通過(guò)
*/

public class FileNameStat
... {
private StringsrcPath; // 要統(tǒng)計(jì)的文件路徑
private MapstatMap; // 用于統(tǒng)計(jì)的map

public FileNameStat(StringsrcPath)
... {
this .srcPath = srcPath;
statMap
= new TreeMap();
}


/**/ /* 獲得要統(tǒng)計(jì)的URL的文件名 */
public StringgetFileName(StringurlString)
... {
URLurl
= null ;
StringfilePath
= null ;
StringfileName
= null ;
try
... {
url
= new URL(urlString);
filePath
= url.getPath();
int index = 0 ;
if ((index = filePath.lastIndexOf( " / " )) !=- 1 )
... {
fileName
= filePath.substring(index + 1 );
}

else
... {
fileName
= "" ;
}

}

catch (MalformedURLExceptione)
... {
}

return fileName;
}


/**/ /* 統(tǒng)計(jì)指定文件名的個(gè)數(shù) */
public void stat(Stringfilename)
... {
Integercount
= null ;
if (statMap. get (filename) != null )
... {
count
= (Integer)statMap. get (filename);
count
= new Integer(count.intValue() + 1 );
}

else
... {
count
= new Integer( 1 );
}

statMap.put(filename,count);
}


/**/ /* 統(tǒng)計(jì)的主方法 */
public void start()throwsFileNotFoundException,IOException
... {
BufferedReaderbfin
= new BufferedReader( new FileReader( this .srcPath));
Stringtemp
= null ;
while ((temp = bfin.readLine()) != null )
... {
stat(getFileName(temp));
}

}


/**/ /* 輸出統(tǒng)計(jì)結(jié)果 */
public void result()
... {
Iteratorit
= statMap.entrySet().iterator();
while (it.hasNext())
... {
Map.Entryentry
= (Map.Entry)(it.next());
System.
out .println((entry.getKey().equals( "" ) ? " 空文件名 " :entry.getKey()) + " 的個(gè)數(shù)是 " + entry.getValue());
}

}


public static void main(String[]args)throwsException
... {
FileNameStatfns
= new FileNameStat( " src.txt " ); // 指定成待統(tǒng)計(jì)文件
fns.start();
fns.result();
}

}

第二題

  簡(jiǎn)評(píng):

        這道題也與百度的業(yè)務(wù)有關(guān),百度現(xiàn)在除了搜索外,還有貼吧,知道,博客等重要產(chǎn)品。
    
        同時(shí)也在積極的探索社區(qū)化,包括前不久宣布進(jìn)軍電子商務(wù)領(lǐng)域,搜索之外的這些產(chǎn)品,
      
其主要功能的實(shí)現(xiàn)主要是對(duì)數(shù)據(jù)庫(kù)的操作。
        因此,想進(jìn)入百度,也需要對(duì)數(shù)據(jù)庫(kù)有一定的認(rèn)識(shí)。
    
      
        

實(shí)現(xiàn)思路及數(shù)據(jù)庫(kù)設(shè)計(jì)

  1,該論壇主要有兩個(gè)實(shí)體對(duì)象,用戶(hù)和帖子;對(duì)于帖子對(duì)象,有一個(gè)問(wèn)題:回復(fù)的帖子是否應(yīng)該跟主題帖子存放在同一個(gè)表里?

  考慮到每天更新10萬(wàn)帖子,說(shuō)明帖子數(shù)比較多,為了方便主題的呈現(xiàn),我一般都把主題貼和回帖分別放在不同的表中,把主題貼和回帖分開(kāi)可以提高查詢(xún)效率(300萬(wàn)的訪(fǎng)問(wèn)量每天)。

  2,按照1中的思路,該論壇由兩個(gè)對(duì)象(用戶(hù)和帖子)變成三個(gè)實(shí)體對(duì)象,分別是用戶(hù),主題帖子,回復(fù)帖子;

  3,上述三個(gè)對(duì)象存在三個(gè)關(guān)系,分別是:

  用戶(hù)--主題帖,一個(gè)用戶(hù)可以發(fā)0個(gè)或多個(gè)帖子,一個(gè)帖子對(duì)應(yīng)一個(gè)用戶(hù)(一對(duì)多關(guān)系),

  主題帖--回復(fù)帖:一個(gè)主題有0個(gè)或多個(gè)回復(fù)帖子,一個(gè)回復(fù)帖子對(duì)應(yīng)一個(gè)主題(一對(duì)多關(guān)系);

  用戶(hù)--回復(fù)貼:一個(gè)用戶(hù)可以回0個(gè)或多個(gè)帖,一個(gè)帖子對(duì)應(yīng)一個(gè)用戶(hù)(一對(duì)多關(guān)系)。

  還存在對(duì)回復(fù)貼的回復(fù),這個(gè)考慮用fatherId來(lái)表示。

4,由于三個(gè)關(guān)系 “用戶(hù)--主題帖,主題帖--回復(fù)帖,用戶(hù)--回復(fù)貼” 都是一對(duì)多關(guān)系,根據(jù)表設(shè)計(jì)一般原則,可以將這兩個(gè)關(guān)系獨(dú)立建立表,也可以不另外建表而將一對(duì)多的關(guān)系體現(xiàn)在實(shí)體表中;然而,表間的連接查詢(xún)是非常耗資源的,所以應(yīng)盡量減少表間連接,那么對(duì)三個(gè)關(guān)系不應(yīng)該分別建表,而是把用戶(hù)的id作為主題表和回帖表的外鍵,把主題貼id作為回帖表的外鍵。

  5,鑒于以上考慮,該論壇的三個(gè)表如下所示

  表名:t_user_info (用戶(hù)信息表)

字段名 類(lèi)型 缺省值 中文含義 約束 備注
id Int 用戶(hù)編號(hào) PRI Auto_increment
Name Varchar(30) 用戶(hù)名
Email Varchar(50)
Phone Varchar(30)
Addr Varchar(200)
      
其他字段略,根據(jù)需要添加
    

  表名:main_content_info (主題帖信息表)

字段名 類(lèi)型 缺省值 中文含義 約束 備注
id Int 貼編號(hào) PRI Auto_increment
Title Varchar(200) 發(fā)帖標(biāo)題
Content Text 發(fā)帖內(nèi)容
UserID Int 用戶(hù)編號(hào) 外鍵

  其他字段略,根據(jù)需要添加

 表名:sub_content_info (回復(fù)貼信息表)

字段名 類(lèi)型 缺省值 中文含義 約束 備注
id Int 貼編號(hào) PRI Auto_increment
Title Varchar(200) 發(fā)帖標(biāo)題
Content Text 發(fā)帖內(nèi)容
UserID Int 用戶(hù)編號(hào) 外鍵
FatherID Int 父編號(hào)
MainID Int 主題帖編號(hào) 外鍵

  其他字段略,根據(jù)需要添加

  6,符合范式分析:

  上述表中每個(gè)字段不可再分,首先滿(mǎn)足1NF;

  然后數(shù)據(jù)庫(kù)表中的每個(gè)實(shí)例或行都是可以被惟一地區(qū)分(id),不存在部分依賴(lài),因此滿(mǎn)足2NF;

  t_user_info (用戶(hù)信息表)和main_content_info (主題帖信息表)不存在任何傳遞依賴(lài),至少屬于BCNF;

  但是sub_content_info (回復(fù)貼信息表)不滿(mǎn)足3NF,因?yàn)榇嬖谌缦聜鬟f依賴(lài):id-->FatherID,FatherID-->MainID。

  范式并不是越高越好,sub_content_info表只滿(mǎn)足2NF卻更有效率,也是當(dāng)今論壇較主流的設(shè)計(jì)。

第三題

  簡(jiǎn)評(píng):

        如何對(duì)海量數(shù)據(jù)進(jìn)行快速檢索,這是搜索引擎的必需考慮的問(wèn)題。這又涉及到數(shù)據(jù)結(jié)構(gòu)和算法。
    
        因此,要想進(jìn)入百度,就必須熟悉一些基本的算法和數(shù)據(jù)結(jié)構(gòu)。 
    

  思路及解決方案如下:

1: 設(shè)計(jì)用TRIE樹(shù)實(shí)現(xiàn)關(guān)鍵詞到其對(duì)應(yīng)id的快速詞典查找

  TRIE樹(shù)的每一個(gè)節(jié)點(diǎn)為一個(gè)包含256個(gè)元素的數(shù)組,同時(shí)指針指向其下一級(jí)節(jié)點(diǎn)

  節(jié)點(diǎn)定義如下:

struct trienode
{
int id;
struct trienode *child[256];
}TRIENODE;

  如果TRIE樹(shù)的某個(gè)節(jié)點(diǎn)的指針為NULL,說(shuō)明從跟節(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)的路徑構(gòu)成文件B中的一個(gè)關(guān)鍵詞,

  在其節(jié)點(diǎn)的id保存該關(guān)鍵詞的id;如果指針不為NULL,則id對(duì)應(yīng)為0或者一個(gè)無(wú)窮大的整數(shù),標(biāo)志從根節(jié)點(diǎn)

  到當(dāng)前節(jié)點(diǎn)的路徑不是一個(gè)完整的關(guān)鍵詞。

  將關(guān)鍵詞轉(zhuǎn)化為二進(jìn)制無(wú)符號(hào)char型數(shù)組,即對(duì)于漢字等雙字節(jié)字符視為兩個(gè)無(wú)符號(hào)char型整數(shù),

  每個(gè)元素的取值范圍在0到255之間。

 2:生成文件b的TRIE樹(shù)

  步驟1:依次讀取文件b的每一行,對(duì)每一行執(zhí)行步驟2到步驟5

  步驟2:讀取關(guān)鍵詞id和關(guān)鍵詞,令為key

  步驟3:依次讀取key的每一個(gè)字符,對(duì)每一個(gè)字符,執(zhí)行步驟4;

  步驟4:如果該字符對(duì)應(yīng)的指針為NULL,則創(chuàng)建其兒子節(jié)點(diǎn);

  步驟5:為當(dāng)前節(jié)點(diǎn)的對(duì)應(yīng)字符id置為關(guān)鍵詞id

3:根據(jù)A文件生成C文件

  步驟1:依次讀取文件A的每一行,對(duì)每一行執(zhí)行步驟2到步驟5

  步驟2:分別獲取當(dāng)前行關(guān)鍵詞、ip地址和時(shí)間

  步驟3:令關(guān)鍵詞key=c1c2...cm,對(duì)c1到cm每個(gè)字符,執(zhí)行步驟4

  步驟4:獲取根節(jié)點(diǎn)的第c1個(gè)元素指針,轉(zhuǎn)移到節(jié)點(diǎn)node1,

  根據(jù)node1的第c2個(gè)元素指針,轉(zhuǎn)移到node2...

  根據(jù)nodem的第cm個(gè)元素,獲取關(guān)鍵詞的id

  步驟5:往文件c中寫(xiě)入一行數(shù)據(jù),格式為關(guān)鍵詞的id、ip地址和時(shí)間

4:復(fù)雜度分析

  生成文件B的TRIE樹(shù)過(guò)程時(shí)間復(fù)雜度為O(n*m),其中n為文件b行數(shù),m為文件b關(guān)鍵詞的最大長(zhǎng)度。TRIE的空間復(fù)雜度為O(n*m),n和m含義同上,但由于實(shí)際應(yīng)用中關(guān)鍵詞之間可能會(huì)有很多前綴相同現(xiàn)象,所以實(shí)際耗費(fèi)空間并不會(huì)很高。

生成C文件的時(shí)間復(fù)雜度同樣為O(n*m),n為文件a行數(shù),m為文件a關(guān)鍵詞的最大長(zhǎng)度,因?yàn)橛辛薚RIE樹(shù)之后,給定一個(gè)關(guān)鍵詞獲得其id的時(shí)間復(fù)雜度為關(guān)鍵詞長(zhǎng)度。生成C文件的過(guò)程除了TRIE樹(shù)空間外基本不需要太多額外的空間,空間復(fù)雜度為O(1),由于系統(tǒng)有1G的可用內(nèi)存,TRIE占用的空間在幾十兆到200M之間(與關(guān)鍵詞集合有關(guān)),因此本方法完全可行。


Trie Tree and some DS&Athm sample


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日韩欧美三级在线 | 欧美午夜精品久久久久免费视 | 一区二区三区视频在线播放 | 日韩精品极品视频在线观看免费 | 精品久久久久久久人人人人传媒 | 欧美黄色一区 | 午夜精品久久久久久 | 日本不卡在线播放 | 欧美成在人线a免费视频 | 亚洲午夜精品视频 | 久久久国产一级片 | 日本hdxxxxx护士免费的 | 奇米影视888狠狠狠777不卡 | 91精品国产亚洲爽啪在线观看 | 日韩爽爽爽视频免费播放 | 午夜免费视频观看 | 亚洲精品国产精品国自产观看 | 欧美性videosex18 | 亚洲精品乱码久久久久久v 国产高清免费视频 | 福利国产在线 | 国产精品夜夜爽 | 99热精品在线 | 国产欧美综合一区二区 | 91精品国产乱码久久久久久久久 | 亚州毛色毛片免费观看 | 欧美特黄a级高清免费大片 精品日本三级在线观看视频 | 国产 欧美 日本 | 91好色视频 | 日本人妖miran护士 | 成人免费视频 | 亚洲精品久久久一区 | 久久久久久一区 | 亚洲在线日韩 | 中文字幕一区二区三区四区五区 | 亚洲欧美国产日本 | 国产在线精品一区二区 | 91精品国产91久久久久久 | 欧美一区在线观看视频 | 久久国产高清视频 | 亚欧成人中文字幕一区 | 色综合天|