题目:
题解:
失配等于本身的后缀,而且失配的失配一定是原式的后缀
代码:
#include <cstdio>
#include <cstring>
using namespace std;
int t[400005],l,ans[400005],tot=0;char st[400005];
void sp()
{
int i,j;
t[0]=-1;
l=strlen(st);
for (i=0;i<l;i++)
{
j=t[i];
while (j!=-1 && st[i]!=st[j]) j=t[j];
t[i+1]=++j;
}
}
int main()
{
while (gets(st))
{
sp();
int j=l,i;
memset(ans,0,sizeof(ans));
tot=0;
while (j!=-1)
{
ans[++tot]=j;
j=t[j];
}
for (i=tot-1;i>=1;i--)
printf("%d ",ans[i]);
printf("\n");
}
}
本文深入探讨了一种字符串匹配算法,并提供了详细的实现代码。通过构造特定的数据结构,该算法能够高效地处理字符串匹配任务,尤其适用于需要频繁进行模式匹配的场景。
694

被折叠的 条评论
为什么被折叠?



