AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

AcWing 835. Trie字符串统计--TrieNode方法    原题链接    简单

作者: 作者的头像   Lic ,  2019-09-12 03:09:31 ,  所有人可见 ,  阅读 1050


0


1

我用TrieNode方法写的,供大家参考。

import java.util.*;
import java.io.*;

public class Main{
    public static final int SIZE = 26;

    public static class TrieNode {
        TrieNode[] children = new TrieNode[SIZE];
        int times;

        TrieNode() {
            times = 0;
            for (int i = 0; i < SIZE; i++)
                children[i] = null;
        }
    }

    public static TrieNode root = new TrieNode();

    public static void insert(String word) {
        TrieNode node = root;
        for (int i = 0; i < word.length(); i++) {
            int index = word.charAt(i) - 'a';
            if (node.children[index] == null)
                node.children[index] = new TrieNode();
            node = node.children[index];
        }
        node.times++;
    }

    public static int query(String word) {
        TrieNode node = root;
        for (int i = 0; i < word.length(); i++) {
            int index = word.charAt(i) - 'a';
            if (node.children[index] == null)
                return 0;
            node = node.children[index];
        }
        return node.times;
    }

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());
        for (int i = 0; i < n; i++) {
            String[] line = reader.readLine().split(" ");
            String op = line[0], word = line[1];
            if (op.equals("I"))
                insert(word);
            else if (op.equals("Q"))
                System.out.println(query(word));
        }
    }
}

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息