十分基础的字典树,直接上代码
import java.io.BufferedInputStream;
import java.util.Scanner;
public class Main {
private static Scanner cin = new Scanner(new BufferedInputStream(System.in));
public static void main(String[] args) {
Trie root = new Trie();
String str;
boolean flag = true;
while(flag) {
str = cin.nextLine();
if("".equals(str)){
flag = false;
}
insert(root, str);
}
while(cin.hasNext()){
str = cin.nextLine();
System.out.println( search(root, str) );
}
}
private static void insert(final Trie root, String str){
Trie cur = root;
int idx;
for(int i = 0; i < str.length(); i++){
idx = str.charAt(i) - 'a';
if(cur.child[idx] == null){
cur.child[idx] = new Trie();
}
cur = cur.child[idx];
cur.ch = str.charAt(i);
cur.cnt = cur.cnt + 1;
}
}
private static int search(final Trie root, String str){
int cnt = 0;
Trie cur = root;
int idx;
for(int i = 0; i < str.length(); i++) {
idx = str.charAt(i) - 'a';
if(cur.child[idx] == null){
return 0;
}
cur = cur.child[idx];
cnt = cur.cnt;
}
return cnt;
}
}
class Trie {
char ch;
int cnt;
Trie[] child;
public Trie() {
cnt = 0;
child = new Trie[26];
}
}