我需要找到兩個字符串相同的所有子字符串。我試圖使用後綴樹來查找子字符串,它工作的很快,但太耗費內存(不適合我的任務)。
有沒有其他想法?找到兩個字符串匹配的有效方法
回答
Aho-corasick是一個很好的實現,用於匹配任何數量的字符串,並具有最小的性能問題。你嘗試過嗎?
我不認爲OP在處理輸入之前已經準備好了匹配的字符串。 – NullUserException 2010-09-11 06:06:24
那麼,它也是基於後綴樹。內存消耗是一個問題。 – jifuyo 2010-09-11 06:08:05
你可以做滑動窗口,雖然這是更少的內存,但更耗時。
最小的子字符串是一個字符(實際上,空單詞是一個,但讓我們把它放在一邊)。
以字符串1的字符1並將該字符的位置保存在字符串2中的某種數據結構中,如地圖或數組。
然後你採取下一個,(字符串1的字符2),並做同樣的事情。
一旦你達到了串1的末尾,你開始了,但這個時候你串1的每兩個字符和送花兒給人提前採取一個字符檢查字符串的所有位置2.
你這樣做只要你的字符串長度與字符串1相等,這意味着你將字符串1和2作爲一個整體進行比較。
請記住:當字符串2長於字符串1,你需要提前整串1串上每2字符一次,因爲串1可能是字符串的一個子2
如果串1大於字符串2,您可以停止檢查,一旦您的子字符串比字符串2更長,那麼所有其他子字符串都將被檢查。理想情況下,你最終會得到一張地圖(最簡單的形式是二維數組),它保存字符串1中每個字符串1的子字符串的位置。
- 1. 找到兩個字符串中的匹配字符串
- 2. 比較兩個字符串以找到匹配的字符串
- 3. 算法找到確切的兩個字符串匹配/不同
- 4. Perl:找到兩個字符串的所有匹配的子字符串
- 5. 在C中匹配(幾個)字符串的最有效方法?
- 6. 字符串匹配的效率,等於與匹配方法
- 7. 目標C ==字符串和isEqualToString方法沒有找到匹配
- 8. 匹配兩個字符串中的單詞時的字符串匹配算法?
- 9. 沒有找到匹配的方法/函數用於java.security.KeyStore.load(java.io.FileInputStream,字符串)找到
- 10. 在大文件字符串中找到部分字符串匹配的最有效方法(python)
- 11. 比較兩個字符串並找到多個匹配
- 12. 匹配兩個字符串&&但得到的要麼匹配/或
- 13. 試圖找到兩個字符串匹配 - 蟒蛇
- 14. 如何查找有一個字符串匹配的字符串和一個字符串在Linux中不匹配
- 15. 匹配兩個字符串中的jQuery
- 16. 找到最匹配的字符串
- 17. 找到確切的字符串匹配++
- 18. 找到最匹配的字符串
- 19. 找到字符串的完全匹配
- 20. visual basic:找到匹配的字符串
- 21. 查找兩個字符串中匹配字的序列
- 22. 查找兩個字符串之間不匹配的字母
- 23. PHP如何找到字符串後匹配/通配符/匹配
- 24. 匹配和替換python 3中的多個字符串的有效方法?
- 25. 匹配正好用兩個「=」字符的字符串兩邊
- 26. 比較兩個字符串的最有效方法是什麼?
- 27. Rethinkdb字符串匹配兩個數組
- 28. 如何匹配兩個字符串?
- 29. 讓兩個字符串匹配空格
- 30. 在mysql中匹配兩個字符串
你能否提供更多細節,或許是一些示例字符串?你的描述有點貧乏。 – 2010-09-11 06:02:25
像差異一樣會做什麼? – NullUserException 2010-09-11 06:02:41
@NullUserException,我不需要像差異那樣找到差異。只匹配部分字符串。 – jifuyo 2010-09-11 06:10:39