- 詞目前我們有一個包含超過一萬個關鍵字或句子(數爲N)
- 輸入很長的字符串列表,長度爲L
問題:檢查字符串是否包含可以被描述爲w給出
的問題列表中的關鍵詞或句子ord篩選wikipedia,但我沒有在該頁面上找到任何算法。解決這個問題最簡單的方法是迭代所有關鍵字或句子,每次檢查長文本是否包含這樣的子字符串。由於我們有很多關鍵字,也考慮到長文本,所以表現非常糟糕。它使用O(NL)時間
似乎應該在O(L)中完成更好的解決方案。任何人都可以對此提出一些建議嗎?
問題:檢查字符串是否包含可以被描述爲w給出
的問題列表中的關鍵詞或句子ord篩選wikipedia,但我沒有在該頁面上找到任何算法。解決這個問題最簡單的方法是迭代所有關鍵字或句子,每次檢查長文本是否包含這樣的子字符串。由於我們有很多關鍵字,也考慮到長文本,所以表現非常糟糕。它使用O(NL)時間
似乎應該在O(L)中完成更好的解決方案。任何人都可以對此提出一些建議嗎?
有幾種方法解決這個問題具有時間複雜度O(M + L),其中L是字符串的長度和M被組合的所有模式的長度:
你可以在這本書中找到所有這些算法的細節(除了Commentz-Walter算法):Algorithms on Strings, Trees and Sequences by Dan Gusfield。
如果您可以明確地從輸入字符串中提取單獨的單詞/句子,則可以使用幾種不同的(更簡單的)方法。
關鍵字的大小是多少?他們都有不同的尺寸,或者最大尺寸是多少? – leo
是的,它們大小不同。對最大尺寸沒有限制。 – Ivan