void zFunc() {
int i,r,l;
z[0]=0;
l=0;r=0;
for (i=1;i<n;i++) {
if (i<=r) z[i]=min(z[i-l],r-i+1); else z[i]=0;
while (i+z[i]<n && s[i+z[i]]==s[z[i]]) z[i]++;
if (i+z[i]-1 > r) {
l=i;
r=i+z[i]-1;
}
}
}
Tags:
Không có nhận xét nào:
Đăng nhận xét