概述
题目描述
图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个英文字符串。 每位借书的读者手中有一个需求码,这个需求码也是一个英文字符串。如果一本书的图书编码恰好以读者的需求码结尾,那么这本书就是这位读者所需要的。 小L刚刚当上图书馆的管理员,他知道图书馆里所有书的图书编码,请你帮他写一个程序,对于每一位读者,求出他所需要的书中图书编码最小(按字典序比较)的那本书,如果没有他需要的书,请输出−1−1。
输入
多组输入 输入的第一行,包含两个正整数 nn 和 qq,以一个空格分开,分别代表图书馆里书的数量和读者的数量。 接下来的 nn 行,每行包含一个英文字符串,代表图书馆里某本书的图书编码。 接下来的 qq 行,每行包含一个整数mm和一个英文字符串tt,以一个空格分开,第一个正整数mm代表图书馆里读者的需求码的长度,第二个字符串代表读者的需求码。
输出
输出有 q 行,如果存在第 i 个读者所需要的书,则在第 i 行输出第 i 个读者所需要的书中图书编码最小的那本书的图书编码,否则输出-1。
样例输入
5 5
zbhefr
abhefr
engfds
adffds
adsfgr
3 efr
1 r
2 ds
4 ffdg
2 qr
样例输出
abhefr
abhefr
adffds
-1
-1
题解
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define endl 'n'
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n, q;
string a("hello");
assert(a.substr(3, 5) == "lo");
while (cin >> n >> q) {
vector<string> s(n);
for (auto &e:s)cin >> e;
sort(s.begin(), s.end());
while (q--) {
int m;
string t;
cin >> m >> t;
bool flag = false;
for (int i = 0; i < n; i++) {
if (s[i].substr(s[i].size() - m) == t) {
flag = true;
cout << s[i] << endl;
break;
}
}
if (!flag) {
cout << -1 << endl;
}
}
}
return 0;
}
最后
以上就是背后信封为你收集整理的图书管理员的全部内容,希望文章能够帮你解决图书管理员所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复