文章
82
粉丝
344
获赞
28
访问
696.1k
两种情况
case1 当前字符串是前面某一个更长串的前缀:判断一下它的son[p][0~25]是否有不为0的元素
case2 当前字符串的前缀是前面某一个短的字符串:建立当前字符串结点路径上如果某一个结点cnt!=0说明这里有前缀 cnt=0删除即可
#include<iostream>
#include<string.h>
using namespace std;
const int maxn=10050;
int son[maxn][26],cnt[maxn];
int idx;
int res;
//Trie树
void insert(char *s){
int p=0;
for(int i=0;s[i];i++){
int u=s[i]-'a';
if(cnt[p]!=0) cnt[p]=0;//如果前面的串是当前串的前缀
if(!son[p][u]) son[p][u]=++idx;
p=son[p][u];
}
int flag=0;
for(int i=0;i<26;i++){
if(son[p][i]!=0){
&nb...
登录后发布评论
暂无评论,来抢沙发