题解 | #单词查找树#

单词查找树

https://ac.nowcoder.com/acm/problem/16864

就是很普通的一个trie树,但是其中有一个新的知识点,所以记一下 其中son[][]表示trie树,p是移动时用到的点


using namespace std;

const int N=100010;
int son[N][26]; 
int idx,p,cnt[N]; 

void add(char *str)
{
	int p=0;//加入一个新的单词时从根节点出发
	for(int i=0;str[i];i++)
	{
		int u=str[i]-'A';
		if(!son[p][u])//如果这个字母没有出现过,就要让它计入
		{
			son[p][u]=++idx;
			p=son[p][u];
		}
		else
		{
			p=son[p][u];
		}
	}
	cnt[p]++;//这个可以没有,是用来统计单词数的
}

int main()
{
	char a[63];
	while(scanf("%s",a)!=EOF)//这种情况下输入“Ctrl+z”就会退出
	{
		add(a);
	}
	cout<<idx+1;
	return 0;
}

全部评论

相关推荐

不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务