我需要找出一系列字符(實際上是一個很長的數字)何時開始重複。我認爲一個模式將是最簡單的。誰能幫我?檢測一系列字符何時重複比O(n!)更好
4
A
回答
2
如果它是一個數字,則從最後開始。
查找最後一個n
和第二個最後一個n
數字相同的序列,該數字在最大數字位數上重複。 O(n)
重複序列停止(來自結尾),即重複開始的位置。
例如說你有1.2340111101111
你可以看到1
重複,但只有4位數。 01111
重複10位數字表示重複開始後1.234
1
取決於這個序列來自何處,this might be useful。
1
我不知道Java。我不確定你確切的問題,但似乎你試圖找到一個序列的最大軌道。下面的僞代碼應有助於:
Given sequence M of length N
Initialize list of indices K
foreach index i from N-1 to N/2
seqLength := N-i
isOrbit? := true
foreach index s from 0 to seqLength-1
if M[N-1-s] != M[N-1-seqLength-s] then
isOrbit? := false
if isOrbit? then
append(K, i)
最長軌道是,當然,最後的入口加入到K的算法是O(n^2/4)左右。它本質上是一種改進的子序列搜索算法。
+0
這是相當書呆子 – Ethan 2011-04-29 23:48:57
+0
@Ethan,這可能不是書呆子交換,但他因爲爲提問者提供良好的搜索飼料而得到讚賞。 – 2011-04-30 00:13:24
相關問題
- 1. 與複雜性爲O更好(n)的
- 2. 檢測O(n)時間和O(1)內存中是否有重複字符串,並且沒有數據結構
- 3. O(m + n)或O(mlgn)更好
- 4. 爲O(n^log n)的碰撞檢測
- 5. 比O(n)glob匹配器好嗎?
- 6. 如何檢測字符串中的一系列字符?
- 7. 哪一個更好? O(n^1/2)或O(logn)
- 8. 如何每次更換一個字符重複一次字符串N次?
- 9. 時間複雜度 - O(n^2)到O(n log n)搜索
- 10. 時間複雜度O(N日誌(log n)的)+ N O(L)
- 11. 時間複雜度:O(logN)或O(N)?
- 12. O(N)查找,但O(日誌(N))的比較排序列表
- 13. 如何檢測字符串列表中的重複?
- 14. 大O複雜度O(n日誌n)與O(n日誌m)
- 15. 檢測字符串中的重複
- 16. 使用grep檢測重複的字符
- 17. 檢測重複字符背靠背Javascript
- 18. 比較列表迭代器O(n)?
- 19. 避免碰撞檢測O(n^2)的複雜性
- 20. 大O符號 - O(n日誌(N))對O(的log(n^2))
- 21. 測試「一對多」關係時重複?
- 22. 當比較兩個表時,O(N)的複雜度
- 23. 比較O((logn)!)和O(2^n)
- 24. C#字符串比較 'O''OE 'O'
- 25. 碰撞檢測複雜度<O(n²):比網格,四叉樹,BSP更簡單的方法?
- 26. 用字符代替,一個整數(N)重複n次
- 27. 這是什麼意思:「檢測到的時間複雜度:O((N + M)* K)」?
- 28. 散列字符串進行重複檢測
- 29. Python:比O(N)更快地插入列表?
- 30. BIG O複雜度n或n^2log(n)
最簡單的方法是強行它,但然後你的運行時間是O(n!) – austinbv 2011-04-21 01:14:30
是的,它的方式太長時間蠻力:)我試過 – Deho 2011-04-21 01:15:10
可能有類似的問題。 http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Matcher.html#find%28%29 – Tass 2011-04-21 01:19:30