【字符串】字典树

字典树就是利用一个这样的树状结构,可以记录字符串有没有出现过
在这里插入图片描述
放个板子

int nxt[100000][26], cnt;
bool st[100000]; // 该结点结尾的字符串是否存在
void insert(string s, int l) // 插入字符串,l是字符串长度
{
    
     
	int p = 0;
	for (int i = 0; i < l; i++)
	{
    
    
		int c = s[i] - 'a';
		if (!nxt[p][c]) nxt[p][c] = ++ cnt; // 如果没有,就添加结点
		p = nxt[p][c];
	}
	st[p] = true;
}
bool find(string s, int l) // 查找字符串,l是字符串长度
{
    
    
	int p = 0;
	for (int i = 0; i < l; i++)
	{
    
    
		int c = s[i] - 'a';
		if (!nxt[p][c]) return 0;
		p = nxt[p][c];
	}
	return st[p];
}

猜你喜欢

转载自blog.csdn.net/dhxbshbdjzxy/article/details/136049333