fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. struct node{
  4. int cnt_trees;
  5. node *next[28];
  6. node(){
  7. cnt_trees=0;
  8. for(int i=0;i<28;i++)next[i]=NULL;
  9. }
  10. }*root;
  11.  
  12. void insert_into_Trie(string str){
  13. node *cur=root;
  14. cur->cnt_trees++;
  15. for(int i=0;str[i];i++){
  16. int id=str[i]-'a';
  17. if(cur->next[id]==NULL)
  18. cur->next[id]=new node();
  19. cur=cur->next[id];
  20. cur->cnt_trees++;
  21. }
  22. }
  23.  
  24. int search(string str){
  25. node *cur=root;
  26. for(int i=0;str[i];i++){
  27. int id=str[i]-'a';
  28. if(cur->next[id]==NULL) return 0;
  29. cur=cur->next[id];
  30. }
  31. return cur->cnt_trees;
  32. }
  33.  
  34. int main()
  35. {
  36. int n;
  37. string op,contact;
  38. scanf("%d",&n);
  39. root=new node();
  40. while(n--){
  41. cin>>op>>contact;
  42. if(op=="add")insert_into_Trie(contact);
  43. else if(op=="find"){
  44. cout<<search(contact)<<endl;
  45. }
  46. }
  47. return 0;
  48. }
  49.  
Success #stdin #stdout 0s 15240KB
stdin
4
add hack
add hackerrank
find hac
find hak
stdout
2
0