hdu1004字典树

原创 2015年07月10日 15:09:13
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;
import java.util.StringTokenizer;

import javax.management.Query;


public class Main {

        public static void main(String[] args) {
                InputReader in = new InputReader(System.in) ;
                PrintWriter out = new PrintWriter(System.out);

                int n , m  ;
                while((n = in.nextInt()) != 0){
                       new Task().solve(n, in, out) ;
                }

                out.flush() ;
        }

}


class  Task{
        static class TNode{
              char  c ;
              int   size  ;
              TNode[] next ;
              public TNode(){
                     next = new TNode[26] ;
                     size = 0 ;
              }
              public TNode(char c){
                     this.c = c ; 
                     next = new TNode[26] ;
                     size = 0 ;
              }
        }

        void  solve(int n , InputReader in , PrintWriter out){
             String mx = null ;
             TNode root = new TNode() ;
             int res = 0 ;
             for(int i = 0 ; i < n ; i++){
                  String s = in.next() ;
                  TNode now = root ;
                  for(char c : s.toCharArray()){
                       int d = c - 'a' ;
                       if(now.next[d] == null){
                           now.next[d] = new TNode(c) ;
                       }
                       now = now.next[d] ;     
                  }
                  now.size++ ;
                  if(res <now.size){
                       mx = s ;
                       res = now.size ;
                  }
             }

             out.println(mx) ;
       }
} 

class InputReader{
    public BufferedReader reader;
    public StringTokenizer tokenizer;

    public InputReader(InputStream stream){
           reader = new BufferedReader(new InputStreamReader(stream), 32768);
           tokenizer = null;
    }

    public String next(){
        while(tokenizer == null || !tokenizer.hasMoreTokens()){
            try{
                tokenizer = new StringTokenizer(reader.readLine());
            }catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        return tokenizer.nextToken();
    }

    public int nextInt() {
        return Integer.parseInt(next());
    }

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

数据结构:字典树的基本使用

说来也奇怪,最近碰到的很多问题都需要用字典树来解决,索性就来研究一番。在这篇博客中,我会通过一些实例来讲解一下字典树的一些基本使用。例如:创建、添加、查找、按字典序排序、按数值大小进行排序(对于一些数...
  • u013761665
  • u013761665
  • 2015年10月19日 00:20
  • 4767

字典树数组实现

字典树是一种很实用也相对好理解的数据
  • u013588639
  • u013588639
  • 2014年08月06日 21:04
  • 1499

字典树C语言实现

字典树 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字...
  • Xiejunyi12
  • Xiejunyi12
  • 2016年01月30日 11:41
  • 2056

字典树简介和简易应用

1、背景         词汇搜索、词频统计等字符串操作,是搜索引擎、文本处理系统等经常使用的业务,现在假设有这么一个简单的文本处理例子:有一篇10000个词的文章,要查出单词“was”在这篇文章中出...
  • ly01kongjian
  • ly01kongjian
  • 2013年03月31日 16:15
  • 3965

字典树题目总结

Trie 就好比维护了一个字典,可以在这个字典里插入删除字符串,也可以查询一个字符串是否在字典中。Trie的插入查找删除复杂度都是O(m)的,其中m为待插入串的长度。 Trie的原理是利用字符串...
  • yew1eb
  • yew1eb
  • 2014年02月17日 20:19
  • 2497

字典树算法详解

字典树 字典树,又称单词查找树,Trie树,是一种树形结构,哈希表的一个变种。用于统计,排序和保存大量的字符串(也可以保存其 的)。 优点就是利用公共的前缀来节约存储空间。在这举个简单的例子:比如说...
  • piaocoder
  • piaocoder
  • 2015年08月21日 17:11
  • 3338

字典树 c++ 实现

字典树 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。 典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串), 所以经常被搜索引擎系统用于文本词频统计。它...
  • rongdongzhu1
  • rongdongzhu1
  • 2015年09月13日 16:16
  • 993

01字典树 小结

为了做13年南京网络赛的一道题 学了这个01字典树 看了别人的模板 之后切了几道水题 现在总结一下01字典树的实现可以看成是把一个数的二进制字符化后插入到一颗一般的字典树中比如在01字典树种插入...
  • SolarDomo
  • SolarDomo
  • 2016年08月10日 10:15
  • 1225

Java实现字典树TrieTree

为了准备阿里的网上笔试,这几天回顾了数据结构.看到字典树时,突然发现四六级的高频词可以用字典树找出来的.(应该不会是一个一个数出来的吧....) 构造字典树的过程如下: 1.首先确定树节点需要用怎么样...
  • lc0817
  • lc0817
  • 2015年08月19日 13:04
  • 3402

字典树简介、应用以及与哈希表的比较

题目要求:1、设计并实现N-array trie,包括初始化,查找,插入,删除等。 2、应用trie结构实现文本文档的索引化,首先扫描文本文档,然后利用trie结构记录单词行号,最后在trie上实现查...
  • liyongqi_
  • liyongqi_
  • 2017年05月04日 22:07
  • 432
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu1004字典树
举报原因:
原因补充:

(最多只允许输入30个字)