触宝线上笔试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之间的交替处理上,还有对输出时考虑失误,不一定要先保存输出结果,然后再输出。好几次笔试都是在输入输出上存在问题,在这方面要引起警觉。

时间: 2024-08-08 13:53:37

触宝线上笔试2018的相关文章

记Booking.com iOS开发岗位线上笔试

今晚参加了Booking的iOS职位线上笔试,结束后方能简单归纳一下. 关于测试内容: Booking采用了HackerRank作为测试平台,测试总时长为75分钟,总计4道题. 测试之前我很紧张,因为根据之前参加微软的Online Test经验来看,应该会有一些复杂的算法题.但是事实上Booking测试的题目,前三题均没有涉及高深的算法,都是一些基础的Objective-C和iOS开发的知识,这反而带了更大的困惑,想的太多反而浪费了大量时间. 测试邀请邮件 最后的结果是完成了3/4,因为时间没了

微软线上笔试-2015-4-3(1,2题) Magic Box &amp;&amp; Professor Q&#39;s Software

写在前面: http://blog.csdn.net/michael_kong_nju/article/details/44872519 关于4.3号的微软线上挑战赛,感觉自己还是刷题刷少了,表现在几个方面:1. 编程经验不足.2. 算法的使用不灵活.所以下面还是要加强OJ的训练, 把Leetcode上的题多做做.后面又把4道题仔细的编写调试了一下,希望和我情况类似的同学也能加紧代码的训练. 1. 第一题的原题是: The circus clown Sunny has a magic box.

秋招--线上笔试记录

这系列帖子用来记录的我凉凉的线上笔试,第一次笔试让我更加深刻的认识到了自己的不足,以及还有许多知识点没有看,算法这一块我看来还没入门,只能说秋招道路任重而道远.希望去北京的这条路自己可以能走得再快一点. 下面来记录一下,在这次笔试的我的一些问题 单选 1.最短路径:用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低. 2.通过构建有序序列,对于未排序数据,在已排序序

支付这条线上 谁在赚钱谁在哭?

互联网.科技巨头不断的跨领域大动作,让整个互联网行业的态势显得错综复杂.只要是未来掌控互联网必不可少的细分领域,哪怕此前不是自身的主业,也一定要涉足其中.于是我们看到,支付宝花了2亿多想通过"集五福"强行杀入社交圈:微信不断在移动支付上兴风作浪--而就目前来看,最受关注的就是支付这一细分领域. 作为一切消费活动必不可少的中间手段,谁掌控了支付就意味着掌控住话语权和主动权.但理念.策略的不同,导致在支付上的表现形式和发展方向也各有不同.结果自然就是在支付这条线上,有的企业在疯狂赚大钱,有

线上服务 CPU 100%?一键定位 so easy!

转自:  https://my.oschina.net/leejun2005/blog/1524687 摘要: 本文主要针对 Java 服务而言 0.背景 经常做后端服务开发的同学,或多或少都遇到过 CPU 负载特别高的问题.尤其是在周末或大半夜,突然群里有人反馈线上机器负载特别高,不熟悉定位流程和思路的同学可能登上服务器一通手忙脚乱,定位过程百转千回. 对此,也有不少同学曾经整理过相关流程或方法论,类似把大象放进冰箱要几步,传统的方案一般是4步: top oder by with P:1040

转载:APP的上线和推广&mdash;&mdash;线上推广渠道

本文版权归个人所有,如需转载请注明出处http://www.cnblogs.com/PengLee/p/4637080.html 目录 应用商店 互联网开放平台 软件下载中心 媒体社交平台 刷榜推广 应用商店 大家都应该清楚,应用商店应该是App推广渠道中最重要的.也是使用最多的一种.目前应用商店的也有很多,总结起来, 大概有如下几类: 1.手机生产商 小米应用商店.联想乐商店,HTC市场,oppo nearme,魅族市场,moto智件园等 2.三大系统应用商店 Google的Android M

“微软小冰”牵手米聊、易信、触宝号码助手,萌妹子想攻入移动搜索腹地,且是微软产品本地化的尝试?

6 月 1 号那天,微信封杀"微软小冰"的消息传开,闹得满城风雨.有人赞同,因为担心隐私泄露.不喜机器人:也有人反对,称腾讯以"有假冒小冰"为由将真小冰也一竿子打死,微信平台规范和话语权都太霸道. 但不管怎样,微软这周末一系列战略合作伙伴的公布,说明"微软小冰"并非一时儿戏,微信之外,微软还是提前准备了不同预案. 从 6 月 6 日开始,微软相继宣布与米聊.易信.触宝号码助手达成产品级战略合作,"微软小冰"将于未来数周之内登陆

关于线上的bug什么时候修复的思考

这里系统专门指的是那种用户量大的系统,比如有几百万或者上千万的注册会员.因为小系统因为用户量少,不存在这种思考,考虑有时候是多余的.另外还有内部系统,给自己公司内部人员使用的,即便是出现了问题,也不会造成很大的问题,内部协调一下即可. 而针对客户的系统,公司的收入和价值来源于给客户提供稳定的服务.这是关系到公司命脉的.如果系统不稳定,在客户心中造成的印象就会不好. 快速修复与稳定测试之间的权衡 如果线上系统出现了bug,用户反馈问题.作为开发人员,肯定要修复bug.是马修复代码后上传到生产环境,

0010 线上遗留问题跟进

线上遗留问题持续跟进 修复版本 问题产生版本 问题类型 测试问题 优先级 修复时间 修复状态 发现人   聚无线1.01 聚无线1.0 bug IE 11下,科大讯飞服务里,点击SDK下载后,上面的TAB无法切换 低   未重现 刘子祥   聚无线1.01 聚无线1.0 需求 目前支付宝实名认证最大5个,需要我们审核后台能够区分出同一个支付宝实名认证的用户 高 3月11 已修复 刘子祥   聚无线1.01 聚无线1.0 需求 增加领取套餐页面的Region选择,默认青岛暂时只支持青岛 中 3月1