首页 > 其他分享 >前缀统计

前缀统计

时间:2023-07-24 15:47:03浏览次数:27  
标签:前缀 int 样例 zds ++ 字符串 统计

前缀统计

题目

给定N个字符串S1,S2,…,SN,接下来进行M次询问,每次询问给定一个字符串T,求S1~Sn中有多少个字符串是T的前缀。并且全部由小写字母组成

输入
第一行:一个字符串T(长度小于1000)

第二行:n(<=20000)

接下来n行,每行一个字符串(长度小于T的长度)

输出
一个整数,表示有多少个字符串是T的前缀

样例
样例输入1

abcdefg
3
abc
abd
a

样例输出1

2

思路

题目意思已经相当清楚,就是求在给定字符串中有多少个是T的前缀。
看到这里不妨先自己想一下在接着看
首先,我们看出是用字典树实现的(不清楚的朋友看这里),而且是一道基础题
然后我们上代码

#include<bits/stdc++.h>
using namespace std;
int n;
char t[1005];
int zds[100005][26];//注意大小,稍不注意就会爆炸
int cnt[100005];
int num = 0;
void insert(char w[]) {//插入
	int p = 0;
	for(int i = 0; w[i]; i ++) {
		int c = w[i]-'a';
		if(!zds[p][c]) zds[p][c] = ++ num;
		p = zds[p][c];
	}
	cnt[p] ++;
}
int query(char w[]) {//询问是否是t的前缀
	int p = 0;
	for(int i = 0; w[i]; i ++) {
		int c = w[i]-'a';
		if(!zds[p][c]) return 0;
		p = zds[p][c];
	}
	return 1;
}
int main() {
	cin >> t >> n;
	insert(t);//将t加入字典树
	int ans = 0;
	for(int i = 1; i <= n; i ++) {
		char a[1005];
		cin >> a;
		if(query(a)) ans ++;//询问如果是那么ans++
	}
	cout << ans;
	return 0;
}

标签:前缀,int,样例,zds,++,字符串,统计
From: https://www.cnblogs.com/L-1115/p/17577371.html

相关文章

  • 560. 和为 K 的子数组(前缀和解决子串问题)
    给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的连续子数组的个数。示例1:输入:nums=[1,1,1],k=2输出:2>思路每个元素对应一个“前缀和”遍历数组,根据当前“前缀和”,在map中寻找「与之相减==k」的历史前缀和当前“前缀和”与历史前缀和......
  • linux 中 awk数组统计每列、行数据之和及平均值
     001、列[root@PC1test02]#lsa.txt[root@PC1test02]#cata.txt##测试数据362825841382##统计每列数据之和[root@PC1test02]#awk'{for(i=1;i<=NF;......
  • 前缀和
    在学完数组后常会遇见这样的题如B3612【深进1.例1】求区间和:有n个数,$a1,a2,a3.....an(ai<=105),m<=103$,$l$,$r$,求区间内的和;$n$个数:$2$$7$$9$$1$$3$$6$$5$$3$你会写出这样的代码:while(m--){ for(inti=起点;i<=终点;i++) sum+=a[i]; ...............抛开题......
  • 全局路由前缀配置
    1、新建RouteConventio.cs文件///<summary>///全局路由前缀配置///</summary>publicclassRouteConventio:IApplicationModelConvention{///<summary>///定义一个路由前缀变量///</summary>privatere......
  • 2-3 编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀 0x 或 0X)转换为与
    ArchlinuxGCC13.1.1 202304292023-07-2219:48:23星期六 点击查看代码#include<stdio.h>#include<ctype.h>inthtoi(constchar*s);intmain(){chararr[4]="0x3A";intresult=htoi(arr);printf("%d\n",resu......
  • redis统计list大小
    Redis统计List大小Redis是一种基于键值对的内存数据库,支持多种数据结构,其中之一就是列表(List)。列表是一种有序的字符串列表,可以在列表的两端进行插入和删除操作。在一些场景中,我们需要统计Redis中列表的大小,本文将介绍如何使用Redis命令来统计列表的大小,并提供代码示例。1.Red......
  • 概率论与数理统计预习提纲
    以下是概率论与数理统计的预习提纲的Markdown格式示例:概率论与数理统计预习提纲1.概率基础随机试验与样本空间事件与事件间的关系概率的定义与性质古典概型与几何概型2.条件概率与独立性条件概率的定义与性质独立事件与事件序列乘法定理与全概率公式贝叶斯定理......
  • jsp 超链接带系统前缀
    如: <a href="www.iteye.com">iteye</a> 网页生成后点击此超链接,始终有如http://localhost:8080的前缀,变成http://localhost:8080/www.iteye.com  解决:加上http://前缀   <a href="http://www.iteye.com">iteye</a> ......
  • 二维数组之个人考试成绩统计
     从b站上黑马程序员的C++课里学到的个人成绩统计  1#include<iostream>2#include<string.h>3usingnamespacestd;4intmain()5{6intscores[3][3]=7{8{100,100,100},9{90,50,100},10{60,70,80}11......
  • 基于R语言股票市场收益的统计可视化分析|附代码数据
    全文链接:http://tecdat.cn/?p=16453 最近我们被客户要求撰写关于股票市场的研究报告,包括一些图形和统计输出。金融市场上最重要的任务之一就是分析各种投资的历史收益要执行此分析,我们需要资产的历史数据。数据提供者很多,有些是免费的,大多数是付费的。在本文中,我们将使用Yahoo......