您的位置:首页 > 其它

Hiho 1014 题目

2015-07-11 21:29 176 查看
hiho一下第二周 Hihocoder #1014 : Trie树

 

参考链接:http://m.blog.csdn.net/blog/u012662688/38354777


 

Java实现:


 

import java.io.BufferedInputStream;


import java.util.Scanner;


 

 

public class Main {


    public static void main(String[] args) {        


        Scanner sc = new Scanner(new BufferedInputStream(System.in));


        


        //构建字典树


        int n = sc.nextInt();        


        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];


    }


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: