還有很長的字符串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'中。 –