【发布时间】:2026-01-15 22:25:01
【问题描述】:
最近在HackerEarth平台遇到一个问题,解决问题的主要思路是找出一个字符串的哪些后缀在线性时间内也是同一个字符串的前缀(in size of string )。例如,在字符串“abcdzyabc”中,“abc”是字符串的后缀,也是它的前缀。我们需要在线性时间内找到所有这些后缀。
现在假设我有一个布尔数组,isSuffixPrefix?,大小为 n,即字符串 str 的长度。如果字符串 str 的后缀从索引 i 开始,即后缀 ,则 isSuffixPrefix?[i] 为 true str[i...n-1] 也是同一个字符串str 的前缀,否则为false。我们如何在线性时间(如果可能)内计算这个数组?
字符串 s = "aaa" 的示例:
isSuffixPrefix?[0] = true // as suffix s[0..2] = "aaa" is also the prefix of string s
isSuffixPrefix?[1] = true // as suffix s[1..2] = "aa" is also the prefix of string s
isSuffixPrefix?[2] = true // as suffix s[2..2] = "a" is also the prefix of string s
【问题讨论】:
标签: string algorithm prefix suffix