2016-11-30 50 views
0

我有一個字符串(你好這是一個字符串),我想在其中搜索關鍵字。我該怎麼做?一個優化的算法或一個方法來找到一個句子(有多個單詞)中的多個單詞字符串(關鍵字)?

我要搜索以下關鍵字的字符串:

字符串:你好這是一個字符串。

關鍵詞: 1.你好這個(應該匹配) 2.你好(應匹配) 3.你好噸(應該不匹配) 4.你好這個我(應該不匹配)

請建議構建數據結構進行存儲和搜索的優化方法?

回答

1

如果你的標準是隻有完整的單詞應該不僅僅匹配它的一半,當字符不匹配時使用中斷/字符串已經結束並且字符串檢查主字符串的索引+1是否是空格或逗號或句號或根據您的需要。如果是,那麼你的字符串是完全匹配的,否則它將是一個字符。

0

如果您正在搜索字符串中的完整單詞。在關鍵字後面添加空格並按照以下步驟操作。

char * string = "Hello this is a string"; 
char * keyword = "Hello t "; 

if(strstr(string,keyword) != NULL) 
    printf("Matched"); 
else 
    printf("Not Matched"); 
+0

它沒有像那樣工作。讓我解釋一下,實際上我需要什麼。我有一個有1000個字符串的文件(第一個問題是如何存儲/構造一個數據結構以便快速搜索),即「你好,這是字符串1」,「你好,這是字符串2」。我想搜索一個關鍵詞即(每秒100個請求,這是3個字符串)。如果我在每個請求中都執行strstr,那麼你的soln會顯着降低應用程序的性能。如果你有任何方法可以做到,請分享或討論。另外,如果我有一個字符串:「你好」,我想搜索關鍵字=「你好」。你的soln會失敗。 – Gurpreet

+0

在這種情況下,您可以使用trie數據結構並將字符串的每個單詞插入爲trie中的節點。 –

+0

我無法使用trie數據結構。由於關鍵字和字符串的長度不固定。雖然在O(n)中搜索,但按照上述情況;這將顯着增加搜索時間。另一個問題是,如果我有100個文件,那麼我將不得不維持100個特里從內存的角度來看不好。我希望你瞭解挑戰。 – Gurpreet

相關問題