触宝线上笔试2018
题目:有多个case,每个case中有一个案例库,求给定字符串是否是案例库中的子串,若是输出个数。
输入:第一行,输出案例库中字符串的个数N,下面N行数为每一个字符串;给定字符串的个数为M,下面M行为给定字符串
例子:
3 //case1案例库 aaa aaa baa 2 //给定字符串 aa ba 1 //case2 案例库 a 1 //给定字符串 a输出 3 //aa是案例库1中三个字符串的子串,个数为3 1 //ba是案例库1中第三个字符串的子串,故个数为1 1 //a是案例库2中的字串,个数为1
解法:用给定的字符串轮流的和案例库中字符比较,看是否是其子串,若是,则个数加1。
1 #include<iostream> 2 #include<string> 3 #include<vector> 4 5 using namespace std; 6 7 bool isMatch(const string &dict, const string &example); 8 vector<int> getNext(const string &needle, int m, vector<int> next); 9 10 int main() 11 { 12 while (cin) //此处是否正确? 13 { 14 int N; 15 cin >> N; 16 vector<string> dict(N, ""); 17 for (int i = 0;i<N;i++) 18 { 19 cin >> dict[i]; 20 } 21 22 int M; 23 cin >> M; 24 vector<string> example(M, ""); 25 for (int i = 0;i<M;i++) 26 { 27 cin >> example[i]; 28 } 29 30 for (int i = 0;i<M;i++) 31 { 32 int count = 0; 33 for (int j = 0;j<N;j++) 34 { 35 if (isMatch(dict[j], example[i])) 36 { 37 count++; 38 } 39 } 40 cout << count << endl; //输出 41 } 42 } 43 return 0; 44 } 45 46 //KMP匹配算法 47 bool isMatch(const string &dict, const string &example) 48 { 49 int n = dict.size(), i = 0; 50 int m = example.size(), j = 0; 51 52 if (m>n) return false; 53 if (n == 0 || m == 0) return true; 54 55 vector<int> next(m); 56 next = getNext(example, m, next); 57 58 while (j<m&&i<n) 59 { 60 if ((0>j) || dict[i] == example[j]) 61 { 62 i++; 63 j++; 64 } 65 else 66 { 67 j = next[j]; 68 } 69 } 70 return j == m ? true : false; 71 } 72 73 vector<int> getNext(const string &needle, int m, vector<int> next) 74 { 75 int t = -1; 76 next[0] = -1; 77 int j = 0; 78 while (j<m - 1) 79 { 80 if (0>t || needle[j] == needle[t]) 81 { 82 j++; 83 t++; 84 next[j] = (needle[j] != needle[t] ? t : next[t]); 85 } 86 else 87 t = next[t]; 88 } 89 return next; 90 }
做题失败的原因,主要在对多个case之间的交替处理上,还有对输出时考虑失误,不一定要先保存输出结果,然后再输出。好几次笔试都是在输入输出上存在问题,在这方面要引起警觉。
转载于:https://www.cnblogs.com/love-yh/p/7482331.html
触宝线上笔试2018相关推荐
- 记Booking.com iOS开发岗位线上笔试
今晚参加了Booking的iOS职位线上笔试,结束后方能简单归纳一下. 关于测试内容: Booking采用了HackerRank作为测试平台,测试总时长为75分钟,总计4道题. 测试之前我很紧张,因为 ...
- CVTE嵌入式应用开发长期实习生线上笔试+线上面试(一面)
线上笔试:20不定项选择+2编程 --2019.01.15 编程1:[LeetCode]有效的括号(C语言解法) 编程2:分离字符串,提取有用信息(下面是自己当时写的,因为不让用IDE,所 ...
- 2020-09-02---三七互娱广州Java平台工程师线上笔试总结
三七互娱广州Java平台工程师线上笔试总结 一.第一部分逻辑选择题 该题型为推断题,找规律 题量为35题,时间为25分钟 举例一个简单的: 也就前几个是这个难度的,后面的难度越来越大,我做了20多个然 ...
- 2021 Shopee AP( Apprentice Program)领航实习生项目(非coding方向):线上笔试总结
现在是 2021.12.1,我在一周前刚刚提交了如题的实习项目,两天前收到线上笔试的通知,刚刚做完,感觉总体难度不大,故略作总结: 考试结构 1)GMAT Data Sufficiency,总计20m ...
- 如何策划一场银行校招线上笔试?
策划一场银行校园招聘线上笔试,只需要4步. 牛客基于服务的上千家企业现状发现,银行业大多数企业在校园招聘的笔试环节会面临这些核心问题: 缺乏出题专业度:大多数企业出题者为业务部门员工,技能水平不一,出 ...
- 借游戏+IP网文双核驱动,触宝走上增长的正确轨道
在互联网行业,纵观阿里.腾讯.美团.小米等成熟的生态企业,他们往往具有更好的业务延展性,不断突破自身边界,持续拉升其天花板. 除了巨头之外,不少中小玩家也在积极拓展新的点与面.其中,触宝借场景化内容应 ...
- 乐鑫科技线上笔试什么内容_2020广东省公务员考试笔试考什么内容?笔试如何去备考?...
2020年广东公务员考试大纲暂未公布.历年广东公务员公共科目笔试为<行政职业能力测验>.<申论>.为帮助考生了解2020年广东公务员考试范围,国培教育苏青禾(V:gpsuc88 ...
- ArcGIS Pro从0到1入门实战教程 书籍淘宝线上销售,免费下载数据和视频
网址:https://m.tb.cn/h.USz9rbD?tk=cu0Vd2cABAV 购书后五星好评,加下面微信,截图发给我们:送Python电子书,下面是我们的微信 关注翎树文化,获得更多好书信息 ...
- 建设银行线上笔试考什么,题库资料
今年笔试和去年题型一样,2小时的行测+综合+英语,30分钟的职业性格测试. 行测部分难度一般,综合题中经济金融占比大,还有会计.法律.营销.管理.金融科技及建设银行相关. 1.行测EPI考察了言语.数 ...
最新文章
- 浅谈Android五大布局——LinearLayout、FrameLayout和AbsoulteLa
- java之前后端交互原理
- MySQL / 可重复读到底是怎么实现的?图解 ReadView 机制
- JavaOne演讲者选择了您不应该错过的10个会话
- JS面向对象——class定义类、类的构造函数、实例方法、访问器方法、静态方法、继承、super、多态
- 500份IT数字化转型资料,限量领!堪称最全,领不到会发慌
- python模拟浏览器代码_python 模拟浏览器
- Github-Git for windowsTortoiseGit下载与安装
- pytorch 测试每一类_2D UNet++ VGGBlock脑胶质瘤分割BraTs + Pytorch实现
- nohup执行的jar 怎么kill_使用Shell脚本如何启动/停止Java的jar程序
- linux之菜鸟学习第一天
- [PHP] PHP+MYSQL留言板制作
- 拓端tecdat|R语言混合图形模型MGM的网络可预测性分析
- 【Python】使用网络调试助手传输数据(UDP协议)
- Java关于数字的正则校验
- java.sql.SQLSyntaxErrorException: Unknown database ‘数据库名‘
- 阿里云物联网平台创建产品设备的方法
- 谷歌将发布全新搜索引擎,你期待吗?
- Android屏幕适配全攻略3-和产品经理聊聊
- 【spring】依赖注入之@Autowired依赖注入