week2_Trie樹

對于每一個給出的字符串,都在詞典里找到以這個字符串開頭的所有詞;
我是真的不擅長樹特別怕圖論。大概數據結構真的不好。
硬著頭皮編吧。
設計的數據結構是:
self:當前字母;
是否指向a-z:長度為26的數組;分別指向子樹。
子樹的節點個數:初始化為1,每當有路過即+1;
所以L[0]={a,0001000000000...1...0}
C不支持動態數組;所以是定義struct;然后申請100W辣么大的數組?
至于那個100w怎么算出來的。。。
我賭五毛它是覺得一個單詞有10那么長還相互正交,10w個單詞嘛。
100w是需要在函數外宏定義的。
這個題基本也就這樣了。
我先睡一覺起來繼續 太困了。
正好algorithmfans講到Trie樹

真的做的時候沒有想的那么復雜。
talk is cheap。

void build(char *s)
{
    int i=0,p=0;//現在位于p點
    while(s[i])
    {
        int x=s[i]-'a';
        if(!T[p].next[x])//如果不存在,新建
        {
            T[le].init();
            T[p].next[x]=le++;//p+x的節點指向le
        }
        p=T[p].next[x];
        T[p].cnt++;
        i++;
    }
}
void query(char *s)
{
    int i=0,p=0;//現在位于p點
    while(s[i])
    {
        int x=s[i]-'a';
        if(!T[p].next[x])
        {
            puts("0");
            return ;
        }
        p=T[p].next[x];
        i++;
    }
    cout<<T[p].cnt<<endl;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 教你如何迅速秒殺掉:99%的海量數據處理面試題 本文經過大量細致的優化后,收錄于我的新書《編程之法》第六章中,新書...
    Helen_Cat閱讀 7,455評論 1 39
  • (本文轉自百度搜索第一個CSDN博客) 一、知識簡介 Trie 的強大之處就在于它的時間復雜度。它的插入和查詢時間...
    Alan66閱讀 850評論 0 0
  • 1 序 2016年6月25日夜,帝都,天下著大雨,拖著行李箱和同學在校門口照了最后一張合照,搬離寢室打車去了提前租...
    RichardJieChen閱讀 5,152評論 0 12
  • 昨天下午和同事還有陳一起騎自行車去東環家樂福買東西,主要是水果和菜,因為便宜,買了不少,回來的時候坐公交。晚上看電...
    望飛雪閱讀 138評論 0 1
  • 文\愛發夢 木子最終還是被湯先生娶回了家。 在木子25歲的時候,我和他們兩個一起吃飯 下個月我要回家相親了,聽說是...
    愛發夢閱讀 711評論 1 3