2011-03-30 59 views
0

當它的形式爲u = ww時,給定單詞V的子字U是雙的,例如「abab」是「acdababx」的雙子字,但「cdab」不是。找到給定單詞的雙子字的算法

我需要一個算法來檢查字V的給定子字U是否加倍。 V可以在線性時間進行預處理,但對於任何特定的U的回答應該具有恆定的時間複雜度,因爲對於每個V會有多個U.例如,如果V =「acdababx」,則給出U作爲間隔,區間[3 ..6]對應於子詞「大巴」。

例如輸入和輸出:

V = abbacbacca

U =

  • [1 4] - >沒有
  • [3 8] - >是
  • [5 8] - >否
  • [8 9] - >是
  • [110] - > N

這不是任何當前比賽的問題。

+0

那麼'u - > ww'保證只有'w'兩次? – Argote 2011-03-30 22:56:46

+0

或者更有趣...如何找到一個字符串中的所有雙子串? – 2011-03-30 23:08:42

+0

@Argote:通過寫u = ww我的意思是你是附加在自己身上的一些詞。 @belisarius:在一個字符串中查找所有的雙重子字符串可以很容易地在O(n^2)時間完成,但是在這裏它太慢了,因爲n可能很大。 – KCH 2011-03-30 23:21:03

回答

相關問題