structtrie { int nex[100000][26], cnt; bool exist[100000]; // 该结点结尾的字符串是否存在
voidinsert(char *s, int l){ // 插入字符串 int p = 0; for (int i = 0; i < l; i++) { int c = s[i] - 'a'; if (!nex[p][c]) nex[p][c] = ++cnt; // 如果没有,就添加结点 p = nex[p][c]; } exist[p] = 1; }
boolfind(char *s, int l){ // 查找字符串 int p = 0; for (int i = 0; i < l; i++) { int c = s[i] - 'a'; if (!nex[p][c]) return0; p = nex[p][c]; } return exist[p]; } };