编程题
### 问题描述 你需要设计一个二字典树算法(Trie),用于存储由 $0$ 和 $1$ 组成的二进制字符串。你的任务有三种类型: 1. 插入新的二进制字符串。 2. 查询特定的二进制字符串是否存在。 3. 计算特定的二进制字符串出现的次数。 ### 输入格式 第一行包含一个整数 $n$ ,表示接下来的操作数量。 接下来的 $n$ 行,每行开始有一个整数 $type$ 表示操作类型,后面跟着一个二进制字符串 $s$,表示操作所涉及的字符串。 对于操作类型: 1. 如果 $type = 1$,则插入字符串 $s$。 2. 如果 $type = 2$,则查询字符串 $s$ 是否存在。存在输出 `YES`,否则输出 `NO`。 3. 如果 $type = 3$,则输出字符串 $s$ 出现的次数。 ### 输出格式 对于每个 $type = 2$ 或 $type = 3$ 的操作,输出一行答案。 ### 样例输入 ``` 5 1 0101 1 0101 2 0101 3 0101 2 1010 ``` ### 样例输出 ``` YES 2 NO ``` ### 样例说明 第一和第二次操作,我们插入了两次字符串 `0101`。 第三次操作,我们查询 `0101`,它确实存在,所以输出 `YES`。 第四次操作,我们查询 `0101` 出现的次数,它出现了 $2$ 次,所以输出 $2$。 第五次操作,我们查询 `1010`,它并不存在,所以输出 `NO`。 ### 测评数据规模 对于 $40$% 的数据, $n \leq 10$。 对于 $80$% 的数据, $n \leq 100$。 对于 $100$% 的数据, $1 \leq n \leq 10^5$,字符串 $s$ 的长度 $|s| \leq 100$。
查看答案
赣ICP备20007335号-2