关注
在做题的始终是在想将所有的输出结果保存了然后最后一次性输出,结果始终输出不了。现在就直接将输出改为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
相关推荐
查看8道真题和解析 点赞 评论 收藏
分享
10-19 18:20
福建师范大学 Java
下午吃泡馍:数字马力的薪资一般哇,5年经验的java/测试就给人一万出头,而且刚入职第三天就让人出差,而且是出半年
帮你内推|数字马力 校招 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 公司福利里最没用的一项是啥 #
715次浏览 33人参与
# 你被哪些公司挂了? #
105623次浏览 650人参与
# 毕业季,给职场新人一些建议 #
160359次浏览 2347人参与
# 你在职场上见过哪些“水货”同事 #
21155次浏览 150人参与
# 华勤技术工作体验 #
12098次浏览 22人参与
# 如何用一句话描述你的职业 #
27067次浏览 175人参与
# 牛友们的论文几号送审 #
61113次浏览 831人参与
# 运营人的第一份offer应该如何选 #
199504次浏览 1227人参与
# 机械人还在等华为开奖吗? #
285566次浏览 1468人参与
# 你们公司哪个部门最累? #
35337次浏览 245人参与
# 如果没找到工作,考公是你的退路吗 #
57976次浏览 431人参与
# 最难的技术面是哪家公司? #
59091次浏览 928人参与
# 找工作如何保持松弛感? #
124260次浏览 1445人参与
# 如何准备秋招 #
67657次浏览 840人参与
# 职场上哪些事情令人讨厌 #
30832次浏览 124人参与
# 毕业季,你想好怎么跟生活对线了吗? #
259778次浏览 3848人参与
# 哪些公司真双非友好? #
48693次浏览 221人参与
# 机械/制造每日一题 #
78057次浏览 1391人参与
# 如何提高实习转正率? #
60988次浏览 423人参与
# 硬件人秋招进展 #
254250次浏览 3945人参与
