#include #include #include #include #include #include #include using namespace std; int main() { int n; setse;//使用二叉树 set::iterator it,et; string s,ss; scanf("%d",&n); for(int i=0; i>ss>>s; if(ss[0]=='i')//插入 se.insert(s); else if(ss[0]=='d')//删除 { it=se.lower_bound(s);//二分查找 最前面 if(it==se.end())continue;//没有找到 int slen=s.length(); s[slen-1]++;//判断不属于的第一个 et=se.lower_bound(s);//查找最后一个 if(it!=et)//没有找到 se.erase(it,et);//删除区间 } else//查找 { it=se.lower_bound(s);//查找 if(it==se.end())//没找到 { printf("No\n"); continue; } int len=s.length();//长 string c(*it,0,len);//前面的赋给c来比较 if(c==s) printf("Yes\n"); else printf("No\n"); } } return 0; }