还有很长的字符串S
,我们有整数A
的阵列,其表示字符串S
的前缀像A[i]
表示前缀S[0..A[i]]
输出:
返回为0相同的大小的数组其中Output[i]
是S[0..A[i]]
最长匹配后缀的长度和S
样品输入:
S = "ababa"
A[]=[0, 1, 2, 3, 4]
样本输出:
Output[]=[1,0,3,0,5]
最幼稚算法我有每个A[i]
只匹配两个字符串末尾的S[0..A[i]]
和S
之间的字符数。但这种算法是O(n^2)
其中n是原始字符串的长度S.
问:
是否有更好的算法预先处理带S,然后可以快速返回长度最长后缀为整个输入数组?
你能解释一下'S [1..A [i]]应该是什么吗?从'1'到'A [i]'的子字符串? – Tim
对不起更新了这个问题。它应该是'S [0..A [i]]'这是从'0'到'A [i]'的子字符串S – pgiitu
@Tim - 从位置'0'到位置'A [i]的子字符串''在'S'中。 –