我有一個字符串列表,並且必須查找字符串是否存在於該列表中。我想在低延遲定價引擎中使用邏輯,所以我想要有真正的快速邏輯。 我以爲有這些字符串存儲在地圖作爲關鍵,然後可以使用find()或count()函數爲相同。 任何人都可以提出任何其他更有效的邏輯相同?從字符串列表中找到最快的字符串
回答
很可能std::unordered_set
是一個適合您需要的選擇。然後您將使用find()
來檢查字符串是否存在。有點像example code here:
#include <iostream>
#include <string>
#include <unordered_set>
int main() {
std::unordered_set<std::string> myset{ "red", "green", "blue" };
std::cout << "color? ";
std::string input;
std::cin >> input;
auto pos = myset.find(input);
if (pos != myset.end())
std::cout << *pos << " is in myset\n";
else
std::cout << "not found in myset\n";
}
要了解std::unordered_set
是如何工作的,請參閱hash set。
還有一個辦法,我剛纔想到的是,
把字符串列表單分號分隔字符串,然後使用strfind。
例如
List of string, <ABC,DEF,GHI,JKL,MNO,PQRS,LMNOPQR, STUVW,XY,Z>
l_czEIDHolder = 「ABC;DEF;GHI;JKL;MNO;PQRS;LMNOPQR; STUVW;XY;Z」
if string_to_search = 「PQRS」
make string_to_search = string_to_search +」;」
strfind(czEIDHolder, string_to_search) OR
string::find(czEIDHolder, string_to_search)
-1令人費解的解決方案。如果您的搜索字符串包含您建議的分隔符(分號),則失敗。另外,由於你要求*快*,*慢*不是答案(O(1)對O(n))。 – IInspectable
爲此,我確信它不會包含該分隔符。我只會把你的第二點(-1)..謝謝你的回覆。 –
如果您的搜索字符串與尾部匹配(但不是整個字符串),也會失敗。這不是一個解決方案。 – IInspectable
- 1. 找到字符串數組中字符串的最快方法
- 2. 從字符串列表到字符串中的接口列表
- 3. 從C中的十個字符串列表中找出最長的字符串?
- 4. 使用C#,從字符串列表中,我們如何找到最接近測試字符串的字符串?
- 5. 迭代字符串列表中的字符的最快對象
- 6. 從字符串列表中的字符串找到子串LAMBDA聲明
- 7. 找到字符串數組中的字符串的最快算法?
- 8. Java:如何在字符串列表中找到最可能的字符串?
- 9. Python字符串列表到字符串
- 10. Scala - 字符串到方形字符串的列表字符串
- 11. 查找字符串中的字符串列表中的蟒蛇
- 12. 從向量C++中找到字符串中的字符串/字符串
- 13. C#找到最字符串
- 14. 算法從字符串列表中找到相同的子字符串
- 15. 如何從字符串中找到子字符串列表的位置?
- 16. 如何從字符串列表中找到特定的字符串?
- 17. 檢查字符串是否是字符串列表中的子字符串的最快方法
- 18. 查找給定的字符串值列表中的字符串
- 19. 如何加快與字符串列表的字符串匹配?
- 20. 使用MongoDB查找字符串列表中的字符串
- 21. 查找字符串列表中的子字符串
- 22. 查找字符串列表中的常見字符串
- 23. 從字符串列表中查找任何字符的索引
- 24. 查找字符串的字符串w /最低頻字符
- 25. 獲取字符從字符串列表索引到的字符
- 26. 用字符串列表替換字符串列表中的字符串
- 27. 如何使從最冗長的字符串到最不長的字符串列表中的列表
- 28. 從字符串中刪除字符的最快方法
- 29. perl:字符串匹配找到最長的子字符串
- 30. Python列表中的字符串列表中的子字符串
是阿里,我的代碼是C++代碼。我剛剛添加了邏輯的僞代碼。 –
這100%回答了我的問題。我也發現我的strfind()方法也沒有效率......因爲它的傳統C處理方式比較慢。 –
@BhupeshPant好的,我很高興它有幫助。我已經添加了一些示例代碼。 – Ali