Hiho 1014 題目

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

    }

}

相關文章
相關標籤/搜索