题目:有多个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相关推荐

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

    今晚参加了Booking的iOS职位线上笔试,结束后方能简单归纳一下. 关于测试内容: Booking采用了HackerRank作为测试平台,测试总时长为75分钟,总计4道题. 测试之前我很紧张,因为 ...

  2. CVTE嵌入式应用开发长期实习生线上笔试+线上面试(一面)

    线上笔试:20不定项选择+2编程       --2019.01.15 编程1:[LeetCode]有效的括号(C语言解法) 编程2:分离字符串,提取有用信息(下面是自己当时写的,因为不让用IDE,所 ...

  3. 2020-09-02---三七互娱广州Java平台工程师线上笔试总结

    三七互娱广州Java平台工程师线上笔试总结 一.第一部分逻辑选择题 该题型为推断题,找规律 题量为35题,时间为25分钟 举例一个简单的: 也就前几个是这个难度的,后面的难度越来越大,我做了20多个然 ...

  4. 2021 Shopee AP( Apprentice Program)领航实习生项目(非coding方向):线上笔试总结

    现在是 2021.12.1,我在一周前刚刚提交了如题的实习项目,两天前收到线上笔试的通知,刚刚做完,感觉总体难度不大,故略作总结: 考试结构 1)GMAT Data Sufficiency,总计20m ...

  5. 如何策划一场银行校招线上笔试?

    策划一场银行校园招聘线上笔试,只需要4步. 牛客基于服务的上千家企业现状发现,银行业大多数企业在校园招聘的笔试环节会面临这些核心问题: 缺乏出题专业度:大多数企业出题者为业务部门员工,技能水平不一,出 ...

  6. 借游戏+IP网文双核驱动,触宝走上增长的正确轨道

    在互联网行业,纵观阿里.腾讯.美团.小米等成熟的生态企业,他们往往具有更好的业务延展性,不断突破自身边界,持续拉升其天花板. 除了巨头之外,不少中小玩家也在积极拓展新的点与面.其中,触宝借场景化内容应 ...

  7. 乐鑫科技线上笔试什么内容_2020广东省公务员考试笔试考什么内容?笔试如何去备考?...

    2020年广东公务员考试大纲暂未公布.历年广东公务员公共科目笔试为<行政职业能力测验>.<申论>.为帮助考生了解2020年广东公务员考试范围,国培教育苏青禾(V:gpsuc88 ...

  8. ArcGIS Pro从0到1入门实战教程 书籍淘宝线上销售,免费下载数据和视频

    网址:https://m.tb.cn/h.USz9rbD?tk=cu0Vd2cABAV 购书后五星好评,加下面微信,截图发给我们:送Python电子书,下面是我们的微信 关注翎树文化,获得更多好书信息 ...

  9. 建设银行线上笔试考什么,题库资料

    今年笔试和去年题型一样,2小时的行测+综合+英语,30分钟的职业性格测试. 行测部分难度一般,综合题中经济金融占比大,还有会计.法律.营销.管理.金融科技及建设银行相关. 1.行测EPI考察了言语.数 ...

最新文章

  1. 浅谈Android五大布局——LinearLayout、FrameLayout和AbsoulteLa
  2. java之前后端交互原理
  3. MySQL / 可重复读到底是怎么实现的?图解 ReadView 机制
  4. JavaOne演讲者选择了您不应该错过的10个会话
  5. JS面向对象——class定义类、类的构造函数、实例方法、访问器方法、静态方法、继承、super、多态
  6. 500份IT数字化转型资料,限量领!堪称最全,领不到会发慌
  7. python模拟浏览器代码_python 模拟浏览器
  8. Github-Git for windowsTortoiseGit下载与安装
  9. pytorch 测试每一类_2D UNet++ VGGBlock脑胶质瘤分割BraTs + Pytorch实现
  10. nohup执行的jar 怎么kill_使用Shell脚本如何启动/停止Java的jar程序
  11. linux之菜鸟学习第一天
  12. [PHP] PHP+MYSQL留言板制作
  13. 拓端tecdat|R语言混合图形模型MGM的网络可预测性分析
  14. 【Python】使用网络调试助手传输数据(UDP协议)
  15. Java关于数字的正则校验
  16. java.sql.SQLSyntaxErrorException: Unknown database ‘数据库名‘
  17. 阿里云物联网平台创建产品设备的方法
  18. 谷歌将发布全新搜索引擎,你期待吗?
  19. Android屏幕适配全攻略3-和产品经理聊聊
  20. 【spring】依赖注入之@Autowired依赖注入

热门文章

  1. 控制阀流量特性的选择
  2. 黄金期货的交易原则有哪些?
  3. 山东探植物园唯美规划 明年竣工成烟台“后花园”
  4. 近百个Android优秀开源项目
  5. PHP 导出Excel的csv格式数字会自动变科学计数法 日期2019-04变成2019/4/1
  6. 如何对一个顶级域名设置域名解析
  7. 解密|FBI不光有特工,还有智能存储系统!
  8. 犹太人:赚钱能培养孩子独立责任奋进多种能力!
  9. python3 unicode字符串类型_Python str与unicode类型
  10. github vue 高星项目