hiho一下第二週 Hihocoder #1014 : Trie樹 java
參考連接:http://m.blog.csdn.net/blog/u012662688/38354777 spa
Java實現: .net
import java.io.BufferedInputStream; code
import java.util.Scanner; blog
public class Main { get
public static void main(String[] args) { io
Scanner sc = new Scanner(new BufferedInputStream(System.in)); class
//構建字典樹 import
int n = sc.nextInt(); im
Trie root = new Trie();//構建一棵空樹,不斷的往裏面放節點。
for(int i = 0;i<n;i++){
insert(root, sc.next());
}
//查找字典樹
int m = sc.nextInt();
for(int i = 0;i<m;i++){
System.out.println(find(root, sc.next()));
}
}
//建立字典樹
public static void insert(final Trie root, String str) {
Trie cur = root;
for (char ch : str.toCharArray()) {
int idx = ch - 'a';
if (cur.child[idx] == null) {
cur.child[idx] = new Trie();
}
cur = cur.child[idx];
cur.num++;
}
}
//查找字典樹
public static int find(final Trie root, String str) {
Trie cur = root;
for (char ch : str.toCharArray()) {
int idx = ch - 'a';
if (cur.child[idx] == null) {
return 0;
}
cur = cur.child[idx];
}
return cur.num;
}
}
class Trie {
Trie[] child;
int num;
public Trie() {
child = new Trie[26];
}
}