Description

下面解释一下什么是前缀和后缀:

字符串的前缀就是字符串的任意一个首部,他也是一个字符串,例如”abcd”他的前缀有”a”,”ab”,”abc”,”abcd”,这四个。同样字符串的后缀就是字符串的任意一个尾部,例如”abcd”他的后缀有”d”,”cd”,”bcd”,”abcd”这四个。

现在有一个字符串s我们称为文本串。然后给出m个字符串,这m个字符串我们称为模式串。对于每一个模式串t,我们用p表示在s中有多少个前缀的后缀中出现了t,我们用q表示在s中有多少个后缀的前缀中出现了t。他现在想知道p和q中的最大值。

Input
第一行输入一个字符串s(0<|s|≤2000)

第二行输入一个数m
接下来的m行,每行一个字符串ti
∑|ti|≤2000

Output
对于每一个ti
输出一行,输出p和q的最大值,如果p和q相同则输出p和q中任意一个数。

Sample input
gyfnb
2
a
b

Sample Output

0
1

Hint
对于字符串”a“没有任何一个前缀和后缀中出现了字符串”a“,对于字符串”b”,前缀“gyfnb”的后缀中和后缀“b”的前缀中出现了“b”。


看懂这道题了吗?其实就是:给你一个母串,再给你一个子串,问这个母串里面有多少个子串。
没错就是这么简单。

可是打比赛的时候,程序没过,最大的一个原因就是:自己的能力还是不够。
还有一个原因就是,自己不敢相信自己的理解能力。

下面就说说,到底要怎么找子串:

首先,写一层循环。
因为如果子串和母串相同的话,肯定会首字母相同。如果母串里有一个字母和子串相同,那么就往后遍历len2个字母。如果这len2个字母相同的话,就确定母串中有一个子串。则数量加一。

其实这个思路是很好想的,那么自己在比赛的时候卡在了哪里呢?今天上午这道题依然卡了很久,问了罗应华才知道,原来是卡在了特例上。

就是如果输入是母串和子串都是连续的,例如子串是sssssss,一个子串是sss,那么就会有问题。其实现在自己的问题自己也说不太清楚,可能是今天上午根本就不在状态。

我觉得,会去想一些特例,真的是程序员最基本的一个基本功,比如我今天的特例,我想的是不重复的字符串,可是还是有重复的字符串。

可能写程序的时候,会想不出来。

下面粘上我自己的代码:

但愿明天的状态比昨天更加理想吧。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char ss[2009];
int main()
{scanf("%s",ss);int m;scanf("%d",&m);int len1=strlen(ss);while(m--){int p=0;//前缀的后缀char tt[2001];memset(tt,0,sizeof(tt));scanf("%s",tt);int len2=strlen(tt);for(int i=0;i<len1;i++){if(ss[i]==tt[0]){int ff=1;for(int j=0;j<len2;j++){if(tt[j]!=ss[i]){ff=0;}if(j!=len2-1)i=i+1;}if(ff){p=p+1;}i=i-len2+1;}}printf("%d\n",p);}return 0;}

最后说两句,写程序这件事,坚持很重要,但同样,效率也很重要。只是做好了打时间战的准备,只是想靠时间磨成元老,是永远不会得到自己想要的东西的。有的人为什么比你强,就是同样的时间,人家比你学到了更多的东西。

加油,自勉。

power oj 2866青春猪头少年不做怀梦美少女的梦(寻找母串中有多少个子串)相关推荐

  1. power oj 2866 青春猪头少年不做怀梦美少女的梦

    题目链接 给一个字符串, 询问其"前缀的后缀,和后缀的前缀,是某个子串"的个数 之前也不了解这个前缀后缀到底是个什么东西= = 不过按照题面对前缀后缀的解释,模拟一遍,就可以发现, ...

  2. 【集训队作业2018】青春猪头少年不会梦到兔女郎学姐(容斥)(分治FFT)

    简要题意: 给定 nnn 种颜色的球,第 iii 种颜色的球数量为 aia_iai​ 个,一种排列的贡献可以如下计算:先把这个序列首尾相连,然后把所有相邻且颜色相同的段拿出来,贡献为他们的长度之积,求 ...

  3. 【洛谷 P6151 [集训队作业2019] 青春猪头少年不会梦到兔女郎学姐】【容斥原理+生成函数】

    题意 定义一个序列的权值为:把序列首尾相接成一个环,环上每段数字长度的乘积.有nnn种数字,求所有满足第iii种数字恰好出现aia_iai​次的排列的权值之和. n,∑ai≤2∗105n,\sum a ...

  4. 集训队作业2018: 青春猪头少年不会梦到兔女郎学姐(多限制容斥)(生成函数)(组合数学)

    题意 给定 nnn 种颜色的球,第 iii 种颜色的球数量为 aia_iai​ 个,一种排列的贡献可以如下计算:先把这个序列首尾相连,然后把所有相邻且颜色相同的段拿出来,贡献为他们的长度之积,求所有排 ...

  5. python画猪头_使用Python画小猪佩奇 社会人标配

    看了一些用python实现小猪佩奇画画的帖子,向自己实现下,以此记录. 社会人的标配是谁,当然是吹风机小猪佩奇身上纹. 我自己尝试画过小猪配齐但是感觉眼睛特别难画,画出来的猪头没有立体感,眼睛画不好整 ...

  6. python代码画猪头_如何用python画猪头

    用python画猪头的方法:首先设置画布和画笔,代码为[a.screensize(400,300)a.setup(width=400,height=300)]:然后画脸型,代码为[.goto(-100 ...

  7. python画猪头程序_用python画猪头的方法

    用python画猪头的方法 发布时间:2020-09-01 14:54:59 来源:亿速云 阅读:104 作者:小新 小编给大家分享一下用python画猪头的方法,相信大部分人都还不怎么了解,因此分享 ...

  8. 拼出爱心图案的c语言,抖音用猪头云朵和爱心微信表情拼成的表白图的口诀表...

    抖音用表情拼爱心的口诀表是什么?抖音上的网友一直都很会玩,最先的时候还是用表情跳孔雀舞,到现在最火的是用猪头和爱心拼成的表白大图,周围都是猪头,里面的爱心再次围城一个大的爱心,其实这可不是胡乱拼凑的哦 ...

  9. 内核里的猪头 -- piggy.o

    记得大学的时候室友对我的昵称是猪头,其实我还挺瘦的,我想他们是嫉妒我帅.^_^ 现在想想当时真是一段美好的时光,可能是我生命中最美好的一段了吧.而一晃也都是十年多前了. piggy.o的生成 1 cm ...

最新文章

  1. oracle常用日期函数
  2. 瑞友虚拟服务器网页登录,瑞友云端虚拟专网系统
  3. 关于超级计算机的英语作文,中国研制出世界最强超级计算机
  4. 注意区分啊~这里求的的事公共子串不是子序列。NOJ308-Substring
  5. 计算机二级mysql模拟_2017年计算机二级MySQL考前模拟练习
  6. 前端用sql 还是mysql_前端小白安装MySQL的踩坑路
  7. 用户修改了信息jwt服务器怎么识别,jwt验证登录信息
  8. Javascript - demo 与 捷径
  9. 爬虫python能做什么-Python除了爬虫,还能干啥?
  10. Java集合详解2:LinkedList和Queue
  11. SQL:postgresql一条sql语句查询多个count
  12. 从头开发一个Flutter插件(一)开发流程
  13. 《Unix编程艺术》chm 电子书下载
  14. 如何用cocos2d-x来开发简单的Uphone游戏:(三) 射击子弹 碰撞检测
  15. VMware vCenter Server“具有外部PSC”架构调整为“具有嵌入式PSC”架构
  16. 为什么越来越多的人放弃欧美市场,转做Starday日本市场?
  17. 《局外人》活着活着就把自己活成了冷漠无情的局外人
  18. 关于Dva中.webpackrc的配置
  19. java 虚函数_Java的虚方法
  20. 可汗学院 统计学习第一天

热门文章

  1. java中函数的调用,java中如何调用函数
  2. Java写入txt文件内容
  3. 在日本做科研工作是怎样的体验?
  4. 2021年高教杯数学建模国赛C题思路详解
  5. 自己写Shader-翻书效果
  6. Scala中Seq转Map的方法(:_*)
  7. android广播监听短信并显示内容
  8. Linux系统安全加固指南(万字长文)
  9. 高一计算机精英班班徽,高一8班班徽设计图案素材大全
  10. 阿里云对象存储OSS文件上传