• hdu 1251(字典树)


    统计难题

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)
    Total Submission(s): 29183    Accepted Submission(s): 11454


    Problem Description
    Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
     
    Input
    输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.

    注意:本题只有一组测试数据,处理到文件结束.
     
    Output
    对于每个提问,给出以该字符串为前缀的单词的数量.
     
    Sample Input
    banana band bee absolute acm ba b band abc
     
    Sample Output
    2 3 1 0
     
     
    字典树水题。。主要就是判断java判断空行结束
    String str = sc.nextLine();
    if(str.length()==0) break;
     
    第二个把 sc.hasNext写成了 true ,无限循环错了n多次 。。。
     
    import java.util.Scanner;
    
    class Trie {
        private Node root;
        public Trie() {
            root = new Node();
        }
        public void insert(String str){
            Node t = root;
            for(int i=0;i<str.length();i++){
                if(t.nodes[str.charAt(i)-'a']==null){
                    Node node = new Node();
                    t.nodes[str.charAt(i)-'a'] = node;
                }
                t = t.nodes[str.charAt(i)-'a'];
                t.num++;
            }
        }
        public int find(String str){
            Node t = root;
            for(int i=0;i<str.length();i++){
                if(t.nodes[str.charAt(i)-'a']==null) return 0;
                t = t.nodes[str.charAt(i)-'a'];
            }
            return t.num;
        }
        class Node{
            int num;
            Node []nodes;
            public Node() {
                num= 0;
                nodes = new Node[26];
            }
        }
    }
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            Trie tree = new Trie();
            while(true){
                String str = sc.nextLine();
                if(str.length()==0) break;
                tree.insert(str);
            }
            while(sc.hasNext()){
                String str1 = sc.nextLine();
                System.out.println(tree.find(str1));
            }
            
        }
    }
  • 相关阅读:
    JDBC事务--软件开发三层架构--ThreadLocal
    SQL查询-约束-多表
    SQL基本语法总结
    DDL
    ZOJ 1178 Booklet Printing
    ZOJ 1107 FatMouse and Cheese
    ZOJ 1099 HTML
    ZOJ 1041 Transmitters
    ZOJ 1095 Humble Numbers
    ZOJ 1105 FatMouse’s Tour
  • 原文地址:https://www.cnblogs.com/liyinggang/p/5348050.html
Copyright © 2020-2023  润新知