用于快速的查找一個字串
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]; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/102325.html
標籤:其他
