z_algorithm】的更多相关文章

//对于字符串a的每个后缀,匹配它与a的第一个后缀的最长公共前缀,复杂度线性void z_algorithm(char *a,int len) { z[]=len; ,j=,k;i<len;i=k) { if(j<i)j=i; while(j<len && a[j]==a[j-i])++j; z[i]=j-i; k=i+; while(k+z[k-i]<j)z[k]=z[k-i],++k; } }…
Z-algorithm Algorithm Task 给定一个文本串 \(S\) 和一个模式串 \(T\),求 \(T\) 对于 \(S\) 的每个后缀子串的公共前缀子串. Limitations 要求时空复杂度均为线性 Solution 设 \(X\) 是一个字符串,则以下表述中,\(X_u\) 代表 \(X\) 的第 \(u\) 个字符,\(X_{u \sim v}\) 代表 \(X\) 的从 \(u\) 起到 \(v\) 结束的字串. 设 \(n = |S|,~m = |T|\). 考虑按…