腾讯2019技术岗笔试 小Q非常喜欢复读,有时候,小Q会得到某个字符串S。这时他会把s不断重复不断重复连成一个无限长的串。比如说,小Q现在得到一个串abc,他会直一复读, 那么形成的字符串就是:
小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,他会直一复读, 那么形成的字符串就是:相关推荐
- 腾讯2019技术岗笔试 猜硬币 众所周知,每一枚硬币都有两面,假定投掷一枚硬币,得到正面和反面的概率是一样的。小Q有一天和好朋友在玩投掷硬币的游戏,他投了n枚硬币,已知至少有p正,q反,求n枚硬币
众所周知,每一枚硬币都有两面,假定投掷一枚硬币,得到正面和反面的概率是一样的.小Q有一天和好朋友在玩投掷硬币的游戏,他投了n枚硬币,已知至少有p正,q反,求n枚硬币正面向上的期望是多少. 分析: 1. ...
- 腾讯2019技术岗笔试 花匠小Q 花匠小Q养了两种花,一种白花,一种红花,现在小Q用这些花进行摆放,摆放的时候连续的白花的数量只能是K的倍数(倍数可以是0),不然就会枯萎。现在给出a和b,小Q想知道长
花匠小Q养了两种花,一种白花,一种红花,现在小Q用这些花进行摆放,摆放的时候连续的白花的数量只能是K的倍数(倍数可以是0),不然就会枯萎.现在给出a和b,小Q想知道长度为[a,b]的摆花方案中有多少种 ...
- 腾讯2019秋招笔试真题
1.小Q爬塔 描述:小Q正在攀登一座宝塔,这座塔很特别,塔总共有n曾层,但是没两层之间的净高却不相同,所以造成了小Q爬过每层的时间也不同.如果某一层的高度为x,那么爬过这一层锁需的还是件也是x.小Q孩 ...
- Interview:算法岗位面试—11.05下午上海某银行信息(总行,四大行之一)技术岗笔试记录
Interview:算法岗位面试-11.05下午上海某银行信息(总行,四大行之一)技术岗笔试记录 导读:这次记住了上次银行考试的教训,提前选择了离着学校较近的考点.这次笔试比上次银行考试相对简单,但是 ...
- 假定有一个无限长的数轴,数轴上每个坐标都是0。现在我们进行n次操作
假定有一个无限长的数轴,数轴上每个坐标都是0.现在我们进行n次操作,每次操作将某一位置 x x x上的数加上c.接下来,进行m次询问,每次询问包含两个整数 l l l 和 r r r,你需要求出在区间 ...
- 腾讯2019秋招笔试真题 1.小Q爬塔 2.妞妞的问题
1.小Q爬塔 [问题描述]小Q正在攀爬一座宝塔,这座宝塔很特别,塔总共有n层,但是两层之间的净高却不相同,所以造成小Q爬过每层的时间也不同.如果某一次高度为x,那么爬过这一层所需时间也就是x.小Q还会 ...
- 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 ...
- 【笔试】春招秋招技术岗笔试必考题归纳总结
目录 一.数据结构必考 1. 排序算法 1)什么时候用什么排序算法类 2)排序算法的稳定性 3)排序算法的时间复杂度&空间复杂度 4)不同时间复杂度的大小关系 5)时间复杂度与空间复杂度的关系 ...
- 阿里-2019算法岗笔试编程题-kmp匹配
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_25737169/article/details/82503724 </div>&l ...
最新文章
- 滚动屏幕显示隐藏div_HTML结构-常用标签:a·img·table·form·input·iframe·div
- 涉嫌盗取前东家谷歌的代码,一位工程师被判赔1.8亿美金,将全由个人偿还
- python最大的社区_python 最大流
- 通过原码、反码、补码彻底搞清左移、右移、无符号右移
- 网易云音乐工程师,亲自揭晓消息队列改造之路! | 技术头条
- 挑战程序设计竞赛题解目录
- linux系统下,我也用虚拟机——linux虚拟机随笔
- 惠普541笔记本更换内存条_惠普541笔记本如何样啊?有什么缺点和优点?, 真心不会...
- C程序设计——打飞机
- 用计算机怎么计算税率表,个税税率表计算器
- Android关于libs,jniLibs库的基本使用说明及冲突解决
- 通信工程测试图修改软件,通信工程工具仪器大全,你用过几种?
- python设计一个学生类姓名年龄成绩_C# 编写学生类Student,包含学生姓名,成绩,设计一个友员函数sortDegree(),将学生成绩按大到小排序。...
- 怎么防止解决百度转码问题
- 计算机视觉产品推荐,个性化推荐:人工智能中的计算机视觉、NLP自然语言处理和个性化推荐系统哪个前景更好一些?...
- 超20城急推购房补贴 地方救市力度接近2008年
- STM32单片机电源端并联电容的重要性
- php 点符号怎么打,word点怎么打到两个字的中间
- 更自然的解决字典数组插入nil而导致crash
- Win7 x64 修复IIS安装失败记录
热门文章
- BZOJ1022:[SHOI2008]小约翰的游戏John(博弈论)
- 安卓手机管理_彻底解决安卓手机通知管理难题,顺便还实现了聊天消息防撤回!?
- 【_ 記 】发送邮件功能和MimeMessageHelper 对象下的To Cc Bcc(发送,抄送,密送)
- 计算机视觉外语论文翻译,图像处理-毕设论文外文翻译(翻译+原文)
- numpy迭代数组nditer、flat
- flutter添加水印、添加自定义水印、禁止截屏(Android)
- linux虚拟桌面设置不同的背景,给不同虚拟桌面设置不同壁纸,将windows的虚拟桌面最大化使用...
- mysql spj_MySQL查询优化器--非SPJ优化--LIMIT优化
- android 六边形布局,Android自定义View——一个可定制的六边形阵列
- 香的很,整理了20份可视化大屏模板