ALDS1_4_C:Dictoinary
题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_4_C
题目如下:
Search - Dictionary
Time Limit : 2 sec, Memory Limit : 131072 KB
Search III
Your task is to write a program of a simple dictionary which implements the following instructions:
- insert str: insert a string str in to the dictionary
- find str: if the distionary contains str, then print 'yes', otherwise print 'no'
Input
In the first line n, the number of instructions is given. In the following n lines, n instructions are given in the above mentioned format.
Output
Print yes or no for each find instruction in a line.
Constraints
- A string consists of 'A', 'C', 'G', or 'T'
- 1 ≤ length of a string ≤ 12
- n ≤ 1000000
Sample Input 1
5 insert A insert T insert C find G find ASample Output 1
no yesSample Input 2
13 insert AAA insert AAC insert AGA insert AGG insert TTT find AAA find CCC find CCC insert CCC find CCC insert T find TTT find TSample Output 2
yes no no yes yes yesNotes
题目分析:
本题可以使用map来做,定义一个map<char* , bool> T; 的map,其中char*记录键字符串,bool同来表示值true或false。
将输入的字符串存入map,并将这个数据的值改为true。
然后当find时,只需检查这个键key对应的值value是否位true。如果为true,则说明这个单词在字典中;反之则不在字典中。
C++代码实现如下:
#include <iostream>
#include <map>
#include <algorithm>
#include <cstring>
#include <string>
using namespace std;
int main()
{
map<char*, bool> T;
int n;
cin >> n;
char str[13], com[13];
for (int i = 0; i < n; i++)
{
cin >> com >> str;
if (com[0] == 'i')
{
T[str] = true;
}
else
{
if (T[str] == true)
cout << "yes\n";
else
cout << "no\n";
}
}
return 0;
}