Problem:
Contacts
struct Trie{
int cnt;
Trie *child[26];
Trie(): cnt(0){};
};
Trie *root;
int insert(string s, int find)
{
int sl = s.length();
Trie *head = root;
for(int i=0;i<sl;i++)
{
int index = s[i]-'a';
if(head->child[index]==NULL)
{
if(find) return 0;
head->child[index] = new Trie();
}
if(!find) head->child[index]->cnt++;
head = head->child[index];
}
return head->cnt;
}
int main(){
int n;
root = new Trie();
cin >> n;
for(int a0 = 0; a0 < n; a0++){
string op;
string contact;
cin >> op >> contact;
if(op=="add") insert(contact, 0);
else cout<<insert(contact, 1)<<endl;
}
return 0;
}
No comments:
Post a Comment