題目敘述
每筆測資第一行有一個正整數N,接下來會有N行,每行有一個不含空格的字串,代表已經背過的單字,接下來會有一個正整數Q,接下來有Q行,每行有一個不含空格的字串,要求輸出這個字串是否已經背過/出現過。
範例輸入 #1
4
henry
john
mary
cindy
5
andy
cindy
vicky
leo
leo
範例輸出 #1
no
yes
no
no
yes
解題思路
使用Map判斷每一個字串是否有出現過,需要注意的是,在判斷Q個字串時,有可能會有重複出現相同字串的情況,這種情況下因為已經有出現過一次,就算這個字串沒有出現在N個字串中第二次詢問時也要輸出yes因為已經出現過了。
解題程式碼如下 (僅供參考):
#include <iostream>
#include <map>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
map<string, int>MAP;
for (int i = 0; i<N; i++)
{
string str;
cin >> str;
MAP[str]++;
}
int Q;
cin >> Q;
for (int i = 0; i<Q; i++)
{
string str;
cin >> str;
if (MAP[str] == 0) cout << "no\n";
else cout << "yes\n";
MAP[str]++;
}
}
留言
張貼留言