当前位置: 首页 > news >正文

网站流量怎么做武汉网站建设优化

网站流量怎么做,武汉网站建设优化,响应式网站做seo,乌鲁木齐网站建设AcWing 835. Trie 字符串统计 题目描述 维护一个字符串集合,支持两种操作: I x 向集合中插入一个字符串 𝑥;Q x 询问一个字符串在集合中出现了多少次。 共有 𝑁 个操作,所有输入的字符串总长度不超过 1…

AcWing 835. Trie 字符串统计

题目描述

维护一个字符串集合,支持两种操作:

  1. I x 向集合中插入一个字符串 𝑥;
  2. Q x 询问一个字符串在集合中出现了多少次。

共有 𝑁 个操作,所有输入的字符串总长度不超过 10^5,字符串仅包含小写英文字母。

输入格式

第一行包含整数 𝑁,表示操作数。

接下来 𝑁 行,每行包含一个操作指令,指令为 I xQ x 中的一种。

输出格式

对于每个询问指令 Q x,都要输出一个整数作为结果,表示 𝑥 在集合中出现的次数。

每个结果占一行。

数据范围

1≤𝑁≤2∗10^4

输入样例

5
I abc
Q abc
Q ab
I ab
Q ab

输出样例

1
0
1

C++

#include <iostream>
#include <string>using namespace std;const int MAX_NODES = 100010; // 定义最大节点数int trie[MAX_NODES][26], count[MAX_NODES], index; // trie数组用于存储字典树,count数组用于计数,index用于记录节点数量// 插入单词到字典树中
void insert(const string &word) {int node = 0; // 从根节点开始for (char letter: word) { // 遍历单词中的每个字母int idx = letter - 'a'; // 将字母映射到[0, 25]的范围内if (!trie[node][idx]) trie[node][idx] = ++index; // 如果当前节点的子节点不存在,则创建新的节点node = trie[node][idx]; // 移动到下一个节点}++count[node]; // 单词插入完成,对应节点的计数加一
}// 查询字典树中某个单词的出现次数
int query(const string &word) {int node = 0; // 从根节点开始for (char letter: word) { // 遍历单词中的每个字母int idx = letter - 'a'; // 将字母映射到[0, 25]的范围内if (!trie[node][idx]) return 0; // 如果当前节点的子节点不存在,则说明单词不存在于字典树中,返回0node = trie[node][idx]; // 移动到下一个节点}return count[node]; // 返回单词对应节点的计数值
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n;cin >> n;while (n--) {char op;string word;cin >> op >> word;if (op == 'I') insert(word);else cout << query(word) << endl;}return 0;
}

Go

package mainimport ("bufio""fmt""os"
)const (AlphabetSize = 26MaxNodes     = 100010
)var (trie  [MaxNodes][AlphabetSize]intcount [MaxNodes]intindex int
)// 插入单词到字典树中
func insert(word string) {node := 0                        // 从根节点开始for i := 0; i < len(word); i++ { // 遍历单词中的每个字母letter := word[i]idx := letter - 'a'       // 将字母映射到[0, 25]的范围内if trie[node][idx] == 0 { // 如果当前节点的子节点不存在,则创建新的节点index++trie[node][idx] = index}node = trie[node][idx] // 移动到下一个节点}count[node]++ // 单词插入完成,对应节点的计数加一
}// 查询字典树中某个单词的出现次数
func query(word string) int {node := 0                        // 从根节点开始for i := 0; i < len(word); i++ { // 遍历单词中的每个字母letter := word[i]idx := letter - 'a'       // 将字母映射到[0, 25]的范围内if trie[node][idx] == 0 { // 如果当前节点的子节点不存在,则说明单词不存在于字典树中return 0}node = trie[node][idx] // 移动到下一个节点}return count[node] // 返回单词对应节点的计数值
}func main() {reader := bufio.NewReader(os.Stdin)writer := bufio.NewWriter(os.Stdout)defer writer.Flush()var n intfmt.Fscanln(reader, &n)for i := 0; i < n; i++ {var op bytevar word stringfmt.Fscanf(reader, "%c %s\n", &op, &word)if op == 'I' {insert(word)} else {fmt.Fprintln(writer, query(word))}}
}

模板

int son[N][26], cnt[N], idx;
// 0号点既是根节点,又是空节点
// son[][]存储树中每个节点的子节点
// cnt[]存储以每个节点结尾的单词数量// 插入一个字符串
void insert(char *str)
{int p = 0;for (int i = 0; str[i]; i ++ ){int u = str[i] - 'a';if (!son[p][u]) son[p][u] = ++ idx;p = son[p][u];}cnt[p] ++ ;
}// 查询字符串出现的次数
int query(char *str)
{int p = 0;for (int i = 0; str[i]; i ++ ){int u = str[i] - 'a';if (!son[p][u]) return 0;p = son[p][u];}return cnt[p];
}
http://www.15wanjia.com/news/29791.html

相关文章:

  • 去类似美团网站做软件开发seo网站推广案例
  • php网站服务器营销策划运营培训机构
  • 做行业分析的网站关联词有哪些小学
  • 谷歌网站地图生成本地免费发布信息网站
  • 网站建设开发网站wrrgbdd苏州百度推广代理商
  • wordpress 模板 导航seo快速排名软件平台
  • 泉州设计网站泉州全网推广
  • 上海网站建设系统seo手机端排名软件
  • 做网站代理商好赚吗?域名查询官网
  • wordpress手机上打不开排名优化哪家专业
  • 做自媒体那几个网站好点外贸业务推广
  • 文章生成器网页版seo国外英文论坛
  • 《学做网站论坛》视频下载2023年8月疫情恢复
  • 购物网站的建设费用如何进行营销推广
  • 网站策划书是什么360seo排名优化服务
  • 大麦网建设网站的功能定位拉新推广赚钱的app
  • 南京 网站制作公司哪家好百度热线电话
  • 国外知名设计网站大全日本网络ip地址域名
  • 中建卓越建设有限公司网站首页友情链接作用
  • 做网站建设哪家效益快百度的营销中心上班怎么样
  • 推广网站的作用找客源免费用哪个软件好
  • 想自学设计从哪里开始抚顺优化seo
  • 亚马逊做网站十大app开发公司排名
  • 伊利网站设计打开百度网址
  • 虚拟机做网站服务聊石家庄seo
  • 苏州制作网站的公司哪家好网站建立
  • wordpress分类 菜单旺道seo优化软件
  • wordpress小工具添加底部seo代码优化
  • 网站建设怎么说服客户seo推广灰色词
  • 1核1g服务器做网站seo课堂