Trie樹模板

 用於快速的查找一個字符串數組

      static final int max=100005;     //全部字符總數
        static int son[][]=new int[max][26];//son數組存儲每一個節點的兒子;一維表示父節點下標,二維表示小寫字母 son[x][0~25]
        static int cnt[]=new int[max];      //cnt[i]存儲如下標i爲結點的字符串的數量;
        static int idx;                     //idx表示當前用到了那個下標,下標是0的點既是根節點又是空節點
        static void insert(String s){
                int p=0;
                for(int i=0;i<s.length();i++){
                        int u=s.charAt(i)-'a';
                        if(son[p][u]==0) son[p][u]=++idx;
                        p=son[p][u];
                }
                cnt[p]++;
        }
        static int query(String s){
                int p=0;
                for(int i=0;i<s.length();i++){
                        int u=s.charAt(i)-'a';
                        if(son[p][u]==0) return 0;
                        p=son[p][u];
                }
                return cnt[p];
        }
相關文章
相關標籤/搜索