【发布时间】:2020-05-20 15:16:25
【问题描述】:
我正在研究我的竞争性编码技能,我偶然发现了一篇文章,用于计算字符串中每个前缀的出现次数。 这是问题陈述 给定一个长度为 n 的字符串 s。在问题的第一个变体中,我们要计算每个前缀 s[0…i] 在同一字符串中出现的次数。在问题的第二个变体中,给出了另一个字符串 t,我们想要计算每个前缀 s[0…i] 在 t 中出现的次数。 我找到了解决办法。
代码:
for (int i = 0; i < n; i++)
ans[pi[i]]++;
for (int i = n-1; i > 0; i--)
ans[pi[i-1]] += ans[i];
for (int i = 0; i <= n; i++)
ans[i]++;
据我所知前缀是什么,我无法完全理解问题陈述:
例如: 字符串:geekforgeek 前缀为:{g,ge,gee,geek,geekf,geekfo,geekfor,geekforg,geekforge,geekforgee} 作为正确的前缀。 有人可以帮我这个问题试图计算什么,因为只有这些是出现一次的可用前缀。 提前致谢。
【问题讨论】: