关注
在做题的始终是在想将所有的输出结果保存了然后最后一次性输出,结果始终输出不了。现在就直接将输出改为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
相关推荐
04-14 12:56
东南大学 嵌入式软件开发 点赞 评论 收藏
分享
查看8道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 这个offer值得去吗? #
21022次浏览 178人参与
# 上班苦还是上学苦呢? #
345273次浏览 2069人参与
# 联宝杯大学生创新大赛,你的技术值得产业级答案 #
47740次浏览 517人参与
# 如果春招能重来,我会___ #
21663次浏览 229人参与
# 提名点击就挂的公司 #
144177次浏览 491人参与
# 除了线上,还能去哪些地方投简历 #
11734次浏览 116人参与
# 在爱玛,骑向未来 #
2939次浏览 319人参与
# 字节开奖 #
151390次浏览 693人参与
# 实习怎么做才有更好的产出 #
49952次浏览 457人参与
# AI coding的好用工具分享 #
88464次浏览 567人参与
# 找工作以来,你最看不惯__ #
79426次浏览 594人参与
# 大学四年该怎么过,才不算浪费时间? #
23861次浏览 107人参与
# 运营每日一题 #
144366次浏览 978人参与
# 面试等了一周没回复,还有戏吗 #
246003次浏览 1857人参与
# 字节7000实习来了,你投了吗? #
55256次浏览 421人参与
# 毕业后不工作的日子里我在做什么 #
269135次浏览 1739人参与
# 薪资爆料 #
422534次浏览 2226人参与
# HR问:你期望的薪资是多少?如何回答 #
99344次浏览 833人参与
# 我的秋招“寄”录 #
476388次浏览 3063人参与
# 哪一刻你突然觉得实习“有点值了” #
28279次浏览 177人参与
# 双非本科求职如何逆袭 #
1649021次浏览 13083人参与
# 双非应该如何逆袭? #
586731次浏览 6396人参与