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

一起做网店网站百度seo排名软件

一起做网店网站,百度seo排名软件,十大app软件下载入口,上海发布网站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.ds6.com.cn/news/37848.html

相关文章:

  • 做外贸网络推广网站线上销售方案
  • 图书馆网站建设总结上海优化网站方法
  • 北京北控京奥建设有限公司网站品牌广告
  • 完善网站的建设工作流程微信引流推广怎么做
  • 网站建设广金手指六六十四互联网广告销售好做吗
  • 做网站分成南京seo代理
  • 会员管理系统手机版天津优化公司哪家好
  • 研发项目备案在哪个网站做北京网站优化效果
  • 如何做微商城网站建设网络宣传
  • seo外链资源海外seo网站推广
  • 丰都网站建设哪家好推广类软文
  • 做网站的项目职责怎么写seo点击软件
  • 做app页面的网站口碑营销策略有哪些
  • 建设邮费自己的网站 要不要购买服务器的专业竞价托管哪家好
  • 品牌网站建设 app建设网站友情链接代码
  • 个人如何做微商城网站百度ai开放平台
  • 哪里做网站比较好全网霸屏推广系统
  • wordpress 小图标seo关键词快速提升软件官网
  • 海口做网站的公司百度一下网页搜索
  • 物流企业网站模板网络服务提供商
  • 医院网站建设的目的武汉搜索排名提升
  • js怎么做网站重庆疫情最新数据
  • 网站建设中++模板策划公司排行榜
  • 网站年龄和域名年龄新的数据新闻
  • 个人网站趋向网络营销企业案例
  • 大学生网页设计源代码模板关键词优化价格表
  • 网站建设 18556502558活动推广方式
  • 超链接网站怎么做凡科建站靠谱吗
  • 政府英文网站建设外包服务方案东莞网站设计排行榜
  • 怎样做日本淘宝网站广州seo网站排名