我用TrieNode方法写的,供大家参考。
import java.util.*;
import java.io.*;
public class Main{
public static final int SIZE = 26;
public static class TrieNode {
TrieNode[] children = new TrieNode[SIZE];
int times;
TrieNode() {
times = 0;
for (int i = 0; i < SIZE; i++)
children[i] = null;
}
}
public static TrieNode root = new TrieNode();
public static void insert(String word) {
TrieNode node = root;
for (int i = 0; i < word.length(); i++) {
int index = word.charAt(i) - 'a';
if (node.children[index] == null)
node.children[index] = new TrieNode();
node = node.children[index];
}
node.times++;
}
public static int query(String word) {
TrieNode node = root;
for (int i = 0; i < word.length(); i++) {
int index = word.charAt(i) - 'a';
if (node.children[index] == null)
return 0;
node = node.children[index];
}
return node.times;
}
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(reader.readLine());
for (int i = 0; i < n; i++) {
String[] line = reader.readLine().split(" ");
String op = line[0], word = line[1];
if (op.equals("I"))
insert(word);
else if (op.equals("Q"))
System.out.println(query(word));
}
}
}