思路有误的地方或者想复杂了的地方欢迎指出,俺滴水平有限,难免遗漏。
喷子请绕路,谢谢。

小Q在做一个给人取名字的程序,有n个名字,每个名字是一个字符串,陆续有m个人找你取名字,每个人有一个要求,(str1,str2),他的名字要以str1为前缀,不能以str2为前缀,你要在所有满足条件的名字里选出字典序最小的给他,没有就输出-1;


思路:

得到所有名字,对名字进行排序。
得到str1的长度,调用函数strncmp(str1,names[j],str1_len)直接比较前n个字符前缀是否相同,如果相同,就倒着比较后缀。
如果后缀完全一样,不满足条件,查看下一个,如果都不满足,输出-1,
后缀有不一样的,输出该字符串。
这里注意,按照字典序排序这里题目给的字典序和网上普遍定义的字典序不一样,

#include <stdio.h>
#include <stdlib.h>
#include <string.h>/**
5 4
aaab
aab
aa
aabb
a
a c
aa aab
aaa aaab
a aaa
**/
void sort(char title[][100],int n) {//排序int i,j,k;char tstr[100];for(i = 0; i < n - 1; ++i) {k = i;for(j = i + 1; j < n; ++j) {if(strcmp(title[k],title[j]) > 0)k = j;}if(k != i) {strcpy(tstr,title[k]);strcpy(title[k],title[i]);strcpy(title[i],tstr);}}
}void show(char s[][100],int n) {int i;for(i = 0; i < n; ++i)printf("*%s\n",s[i]);puts(" ");
}int main()
{int n,m;char names[100][100];scanf("%d %d",&n,&m);int i=0;for(i=0; i<n; i++){scanf("%s",names[i]);}show(names,n);sort(names,n);show(names,n);for(i=0; i<m; i++){char str1[100];char str2[100];char str3[100];scanf("%s %s",str1,str2);int str1_len=strlen(str1);int str2_len=strlen(str2);int j=0;int flag=1;for(j=0; j<n; j++){if(strncmp(str1,names[j],str1_len)==0){//前缀相同int len=strlen(names[j]);int k=0;flag=1;for(k=len; k>=len-str2_len; k--){if(str2[k]!=names[j][k]){flag=0;printf("不符合%c,%c\n",str2[k],names[j][k]);break;}}if(flag==0){printf("%s\n",names[j]);names[j][0]='\0';break;}}}if(flag==1){printf("-1\n");}}return 0;
}

2019腾讯第三次笔试 小Q取名字相关推荐

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

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

  2. 2019腾讯科学WE大会:在小宇宙里看见大宇宙的轮廓

    11月3日,全球权威科学家即将再聚腾讯科学WE大会.今年,我们探索宇宙的方式与以往都不一样.为了看见宇宙的轮廓,我们要前往的是一个"小宇宙". 潜入颅内宇宙.捕捉幽灵粒子.解码癌细 ...

  3. 2019腾讯暑期实习生正式笔试

    找规律,如果1+2可以表示3以内所有数,1+2+4表示7以内所有数,1+2+4+8表示15以内所有数,,,规律:a[n]<=sum[1~n-1]+1时,可以表示sum[1~n]内所有数 AC代码 ...

  4. 2013腾讯编程马拉松||HDU 4505 小Q系列故事——电梯里的爱情 水水水

    http://acm.hdu.edu.cn/showproblem.php?pid=4505 题目大意: 电梯最开始在0层,并且最后必须再回到0层才算一趟任务结束.假设在开始的时候已知电梯内的每个人要 ...

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

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

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

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

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

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

  8. 最新九月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试三十题

    最新九月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试三十题 引言 自发表上一篇文章至今(事实上,上篇文章更新了近3个月之久),blog已经停了3个多月,而在那之前,自开博以来的21个月每月都不曾断过. ...

  9. 2019腾讯暑期实习生技术研究与数据分析笔试

    2019腾讯暑期实习生技术研究与数据分析笔试 抱着一颗尝试的心态,投了腾讯的暑期实习生,昨晚刚笔试完,不出意外的凉凉,完全不会写=.= 全懵逼,呃,最后记了一下题目,现在分享下,给大家参考参考. 此次 ...

最新文章

  1. STP 简介----生成树算法
  2. IC基础知识(3)通用模拟,数字和混合信号集成电路
  3. 7.pip工具的使用
  4. python之禅中文-python之禅-----我最喜欢的翻译版
  5. FIO测试磁盘的iops
  6. html图片分开,webpack单独分离打包css,css里引用的图片路径错误,怎么解决?
  7. C++(STL):20---deque容器访问元素
  8. 【机器学习】机器学习处理不均衡分类
  9. 我对架构师的理解(如何成为一个合格的架构师)
  10. 【Linux】linux grep过滤中,不包含某些字符串
  11. mysql执行计划id相同_MySQL|MySQL执行计划
  12. 超炫的3D特效程序管理功能android
  13. abb机器人编程指令写字_ABB机器人编程指令创建
  14. windows 配置中科大的 Rust 下载云,提高下载速度
  15. 叫你别随便重启Redis!!!怎么样,数据全丢了吧~~~
  16. Vim中文本全部选中
  17. MySQL查询优化系列文章
  18. 史上最大数据泄露:维基解密公布CIA黑客兵工厂
  19. java计算机毕业设计志愿者管理系统演示录像2020源码+mysql数据库+系统+lw文档+部署
  20. 计算机显卡有辐射吗,电脑的显卡辐射大吗

热门文章

  1. 1019 数字黑洞 python
  2. 欢迎大家来找茬 bug在哪里?
  3. 比较两个英文字母串s和t的大小
  4. 【水】中国地图着色问题
  5. 更新PIP遇到的问题ERROR: Exception:Traceback (most recent call last):
  6. JAVA多线程设计模式篇 12、Thread-Specific Storage模式——给我个柜子
  7. 安卓系统android使用C# .NET Xamarin框架调用相机拍照
  8. Java实现网格中移动字母
  9. 携程出发点跟团查询API (下)
  10. java-IO InputStream和Reader的区别和使用