关注
在做题的始终是在想将所有的输出结果保存了然后最后一次性输出,结果始终输出不了。现在就直接将输出改为cout输出了。现在虽然本地可以AC了,但是就想问问大佬们,我对多case的处理是否正确。 #include<iostream>
#include<string>
#include<vector>
using namespace std;
bool isMatch(const string &dict, const string &example);
vector<int> getNext(const string &needle, int m, vector<int> next);
int main()
{
while (cin) //此处是否正确?
{
int N;
cin >> N;
vector<string> dict(N, "");
for (int i = 0;i<N;i++)
{
cin >> dict[i];
}
int M;
cin >> M;
vector<string> example(M, "");
for (int i = 0;i<M;i++)
{
cin >> example[i];
}
for (int i = 0;i<M;i++)
{
int count = 0;
for (int j = 0;j<N;j++)
{
if (isMatch(dict[j], example[i]))
{
count++;
}
}
cout << count << endl; //输出
}
}
return 0;
}
//KMP匹配算法
bool isMatch(const string &dict, const string &example)
{
int n = dict.size(), i = 0;
int m = example.size(), j = 0;
if (m>n) return false;
if (n == 0 || m == 0) return true;
vector<int> next(m);
next = getNext(example, m, next);
while (j<m&&i<n)
{
if ((0>j) || dict[i] == example[j])
{
i++;
j++;
}
else
{
j = next[j];
}
}
return j == m ? true : false;
}
vector<int> getNext(const string &needle, int m, vector<int> next)
{
int t = -1;
next[0] = -1;
int j = 0;
while (j<m - 1)
{
if (0>t || needle[j] == needle[t])
{
j++;
t++;
next[j] = (needle[j] != needle[t] ? t : next[t]);
}
else
t = next[t];
}
return next;
}
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
- 1... 记录一下这两个月面试以来遇到的手撕题2.2W
- 2... 【双非本】上岸字节后端 | 接单 | 奖学金 | 做自媒体,分享下主包的大学四年 ✨🎓8080
- 3... 💌【520限时活动公告】牛爱网高甜营业!你的恋爱通关秘籍已送达~6128
- 4... 【26届四段大厂】大二字节&腾讯offer 投递技巧保姆级教程4176
- 5... 腾讯 CSIG 三面 面经 已OC!~4129
- 6... 广州25应届计算机 Java想转行4004
- 7... 真的还有必要继续卷计算机吗?3884
- 8... 差不多还有一周就要去团子实习了,部门自我感觉不是很核心,但是现在比较焦虑。清楚自己是一个八股选手,项目经验几乎是0,比较依赖ai,外卖点评什么的都没敲过,自己的学习能力应该算中等?很害怕进去之后比较push,然后发现我是个水货把我提前开除了,想问问这段时间可以做些什么准备呢?速通一下外卖项目跟着看一遍视频?(有点担心跟着敲一遍时间不够)?2857
- 9... 离开这座让我伤心的城市了💔,希望以后一切顺利吧!#补录# #裁应届生# #捡漏# #minimax#2714
- 10... 好未来暑期面试2275
正在热议
更多
# 一人一个landing小技巧 #
29210次浏览 559人参与
# 你们公司哪个部门最累? #
10414次浏览 83人参与
# 牛友们的论文几号送审 #
30816次浏览 672人参与
# 这些公司卡简历很严格 #
29954次浏览 149人参与
# 大学最后一个寒假,我想…… #
33217次浏览 371人参与
# 你们公司几号发工资 #
15654次浏览 106人参与
# Tplink求职进展汇总 #
125070次浏览 700人参与
# 国企还是互联网,你怎么选? #
134470次浏览 987人参与
# 工作压力大怎么缓解 #
73113次浏览 914人参与
# 正在实习的你,有转正机会吗? #
372694次浏览 2884人参与
# 写简历别走弯路 #
725098次浏览 7905人参与
# 秋招想进国企该如何准备 #
55941次浏览 359人参与
# bilibili求职进展汇总 #
59203次浏览 580人参与
# 夸夸我的求职搭子 #
187171次浏览 1882人参与
# 查收我的offer竞争力报告 #
178408次浏览 1121人参与
# 牛油的搬砖plog #
36232次浏览 206人参与
# 我在牛爱网找对象 #
181764次浏览 1386人参与
# 520告白墙 #
29617次浏览 425人参与
# 经纬恒润求职进展汇总 #
116977次浏览 1025人参与
# 面试被问第一学历差时该怎么回答 #
124468次浏览 775人参与