小Q非常喜欢复读,有时候,小Q会得到某个字符串S。这时他会把s不断重复不断重复连成一个无限长的串。比如说,小Q现在得到一个串abc,他会直一复读, 那么形成的字符串就是:

abcabcabcabcabcabcabc...

同时发送消息的字长是有限制的。如果要发送的串超过了长度限制,那么就只会发送这个串的一个前缀。比如说对于上述无限长的字符串,若长度限制是13,那么实际发出去的字符串是abcabcabcabca。
现在小Q发出去了一个字符串T,但他不能确定他复读的字符串是什么了。他唯一知道的是,他复读的字符串,一定是m个字符串中的一个。他希望知道,在这m个字符串中,有多少个字符串可能是小Q复读后发送出去的呢?


分析:
此题理解不难,看来是要在效率上下功夫,
遇到这种很多字的题,越是遇到,越是胸有成竹,因为它给的信息更多,更好理解。
我想到的有两种思路:
1.对子串值char转int求和,然后对原串值求和,如果原串值能整除子串的和,且就说明是这个数。但是,遇到比如abc和bbb的情况,由于他们的ascii码求和相同,这样做有漏洞。
2.所以用传统思路字串匹配。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{int n=0;int m=0;char T[200]= {'\0'};char substr[1000];memset(substr, '\0', 1000 * sizeof(char));scanf("%d",&n);scanf("%s",T);scanf("%d",&m);int i=0;int j=0;int sum=0;int Tlength=strlen(T);for(i=0; i<m; i++){scanf("%s",substr);int sublen=strlen(substr);int n=Tlength/strlen(substr);//子串和母串长度关系int left=Tlength%strlen(substr);int flag=1;for(j=0; j<n; j++){int k=0;for(k=0; k<sublen; k++){printf("对比 %c 和 %c 。\n",substr[k],T[j*sublen+k]);if(substr[k]!=T[j*sublen+k]){printf("%c 和 %c 不一样\n",substr[k],T[j*sublen+k]);flag=0;break;}}if(flag==0){break;}}//子串长度倍数不等于母串if(left!=0&&flag!=0){for(j=0; j<left; j++){printf("剩下%d个字符,对比 %c 和 %c 。\n",left,substr[j],T[(n-1)*sublen+j]);if(substr[j]!=T[(n-1)*sublen+j]){flag=0;break;}}}if(flag==1){sum+=1;printf("%s 是原串的子串\n",substr);}}printf("有%d个子串可能是\n",sum);return 0;
}

按照要求格式输出;

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{int n=0;int m=0;char T[200]= {'\0'};char substr[1000];memset(substr, '\0', 1000 * sizeof(char));scanf("%d",&n);scanf("%s",T);scanf("%d",&m);int i=0;int j=0;int sum=0;int Tlength=strlen(T);for(i=0; i<m; i++){scanf("%s",substr);int sublen=strlen(substr);int n=Tlength/strlen(substr);//子串和母串长度关系int left=Tlength%strlen(substr);int flag=1;for(j=0; j<n; j++){int k=0;for(k=0; k<sublen; k++){//printf("对比 %c 和 %c 。\n",substr[k],T[j*sublen+k]);if(substr[k]!=T[j*sublen+k]){//printf("%c 和 %c 不一样\n",substr[k],T[j*sublen+k]);flag=0;break;}}if(flag==0){break;}}//子串长度倍数不等于母串if(left!=0&&flag!=0){for(j=0; j<left; j++){//printf("剩下%d个字符,对比 %c 和 %c 。\n",left,substr[j],T[(n-1)*sublen+j]);if(substr[j]!=T[(n-1)*sublen+j]){flag=0;break;}}}if(flag==1){sum+=1;//printf("%s 是原串的子串\n",substr);}}printf("%d",sum);return 0;
}

腾讯2019技术岗笔试 小Q非常喜欢复读,有时候,小Q会得到某个字符串S。这时他会把s不断重复不断重复连成一个无限长的串。比如说,小Q现在得到一个串abc,他会直一复读, 那么形成的字符串就是:相关推荐

  1. 腾讯2019技术岗笔试 猜硬币 众所周知,每一枚硬币都有两面,假定投掷一枚硬币,得到正面和反面的概率是一样的。小Q有一天和好朋友在玩投掷硬币的游戏,他投了n枚硬币,已知至少有p正,q反,求n枚硬币

    众所周知,每一枚硬币都有两面,假定投掷一枚硬币,得到正面和反面的概率是一样的.小Q有一天和好朋友在玩投掷硬币的游戏,他投了n枚硬币,已知至少有p正,q反,求n枚硬币正面向上的期望是多少. 分析: 1. ...

  2. 腾讯2019技术岗笔试 花匠小Q 花匠小Q养了两种花,一种白花,一种红花,现在小Q用这些花进行摆放,摆放的时候连续的白花的数量只能是K的倍数(倍数可以是0),不然就会枯萎。现在给出a和b,小Q想知道长

    花匠小Q养了两种花,一种白花,一种红花,现在小Q用这些花进行摆放,摆放的时候连续的白花的数量只能是K的倍数(倍数可以是0),不然就会枯萎.现在给出a和b,小Q想知道长度为[a,b]的摆花方案中有多少种 ...

  3. 腾讯2019秋招笔试真题

    1.小Q爬塔 描述:小Q正在攀登一座宝塔,这座塔很特别,塔总共有n曾层,但是没两层之间的净高却不相同,所以造成了小Q爬过每层的时间也不同.如果某一层的高度为x,那么爬过这一层锁需的还是件也是x.小Q孩 ...

  4. Interview:算法岗位面试—11.05下午上海某银行信息(总行,四大行之一)技术岗笔试记录

    Interview:算法岗位面试-11.05下午上海某银行信息(总行,四大行之一)技术岗笔试记录 导读:这次记住了上次银行考试的教训,提前选择了离着学校较近的考点.这次笔试比上次银行考试相对简单,但是 ...

  5. 假定有一个无限长的数轴,数轴上每个坐标都是0。现在我们进行n次操作

    假定有一个无限长的数轴,数轴上每个坐标都是0.现在我们进行n次操作,每次操作将某一位置 x x x上的数加上c.接下来,进行m次询问,每次询问包含两个整数 l l l 和 r r r,你需要求出在区间 ...

  6. 腾讯2019秋招笔试真题 1.小Q爬塔 2.妞妞的问题

    1.小Q爬塔 [问题描述]小Q正在攀爬一座宝塔,这座宝塔很特别,塔总共有n层,但是两层之间的净高却不相同,所以造成小Q爬过每层的时间也不同.如果某一次高度为x,那么爬过这一层所需时间也就是x.小Q还会 ...

  7. B站哔哩哔哩21届秋招算法岗笔试 假设货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。现在小明使用1024元的纸币购买了一件价值为N(0<N<=1024)的商品

    哔哩哔哩21届秋招算法岗笔试 题目描述: 假设货币系统包含面值1元.4元.16元.64元共计4种硬币,以及面值1024元的纸币.现在小明使用1024元的纸币购买了一件价值为N(0<N<=1 ...

  8. 【笔试】春招秋招技术岗笔试必考题归纳总结

    目录 一.数据结构必考 1. 排序算法 1)什么时候用什么排序算法类 2)排序算法的稳定性 3)排序算法的时间复杂度&空间复杂度 4)不同时间复杂度的大小关系 5)时间复杂度与空间复杂度的关系 ...

  9. 阿里-2019算法岗笔试编程题-kmp匹配

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_25737169/article/details/82503724 </div>&l ...

最新文章

  1. 滚动屏幕显示隐藏div_HTML结构-常用标签:a·img·table·form·input·iframe·div
  2. 涉嫌盗取前东家谷歌的代码,一位工程师被判赔1.8亿美金,将全由个人偿还
  3. python最大的社区_python 最大流
  4. 通过原码、反码、补码彻底搞清左移、右移、无符号右移
  5. 网易云音乐工程师,亲自揭晓消息队列改造之路! | 技术头条
  6. 挑战程序设计竞赛题解目录
  7. linux系统下,我也用虚拟机——linux虚拟机随笔
  8. 惠普541笔记本更换内存条_惠普541笔记本如何样啊?有什么缺点和优点?, 真心不会...
  9. C程序设计——打飞机
  10. 用计算机怎么计算税率表,个税税率表计算器
  11. Android关于libs,jniLibs库的基本使用说明及冲突解决
  12. 通信工程测试图修改软件,通信工程工具仪器大全,你用过几种?
  13. python设计一个学生类姓名年龄成绩_C# 编写学生类Student,包含学生姓名,成绩,设计一个友员函数sortDegree(),将学生成绩按大到小排序。...
  14. 怎么防止解决百度转码问题
  15. 计算机视觉产品推荐,个性化推荐:人工智能中的计算机视觉、NLP自然语言处理和个性化推荐系统哪个前景更好一些?...
  16. 超20城急推购房补贴 地方救市力度接近2008年
  17. STM32单片机电源端并联电容的重要性
  18. php 点符号怎么打,word点怎么打到两个字的中间
  19. 更自然的解决字典数组插入nil而导致crash
  20. Win7 x64 修复IIS安装失败记录

热门文章

  1. BZOJ1022:[SHOI2008]小约翰的游戏John(博弈论)
  2. 安卓手机管理_彻底解决安卓手机通知管理难题,顺便还实现了聊天消息防撤回!?
  3. 【_ 記 】发送邮件功能和MimeMessageHelper 对象下的To Cc Bcc(发送,抄送,密送)
  4. 计算机视觉外语论文翻译,图像处理-毕设论文外文翻译(翻译+原文)
  5. numpy迭代数组nditer、flat
  6. flutter添加水印、添加自定义水印、禁止截屏(Android)
  7. linux虚拟桌面设置不同的背景,给不同虚拟桌面设置不同壁纸,将windows的虚拟桌面最大化使用...
  8. mysql spj_MySQL查询优化器--非SPJ优化--LIMIT优化
  9. android 六边形布局,Android自定义View——一个可定制的六边形阵列
  10. 香的很,整理了20份可视化大屏模板