如何实现将前缀与字符串匹配的最快算法
How to implement a fastest algorithm for match the prefix with string?
大约有 100K 个字符串 - 前缀,现在我们需要知道给定的字符串是否与这些前缀之一匹配。例如,前缀为:
12
123
1234
12345
现在给定的字符串是 123abc,它将与"123"前缀匹配;如果给定的字符串12340098,它将与"1234"前缀匹配。
由于有 100K 前缀,因此我们需要一种非常快速的方法来匹配它,我们如何使用该C++来实现它?
我认为您正在寻找 trie 数据结构,该结构针对以下形式的查询进行了优化:"这些字符串中的任何一个是给定字符串的前缀吗?"或"这个给定的字符串是任何其他字符串的前缀吗?"(这与 Varshavchik @Sam在评论中提到的确定性有限自动机有关,尽管这种联系需要一些 CS 理论才能完全理解(。
有很多方法可以在C++中实现trie。我建议从阅读数据结构开始,以更好地了解它的工作原理,然后使用它来指导您的实现。如果在编码过程中遇到一些问题,请随时发布后续问题。
相关文章:
- 找到具有最多子串栅栏的字符串排列
- std::regex:匹配由数字和空格组成的字符串,并提取数字.如何?
- 我的求解(字符串 a、字符串 b)的输出与随机哈希中的预期输出不匹配
- 打印所有最长匹配的子字符串
- 需要忽略日期/序列号,但匹配字符串其余部分的正则表达式
- 正则表达式匹配字符串之间的数字
- 如何在 qt 中使用 QRegularExpression 匹配字符串开头的空格?
- 用Osttream语法双串到字符串
- qt中的正则是不匹配字符串
- Regex_replace两次匹配字符串的结尾
- 使用正则表达式匹配字符串
- 基于匹配字符串模式来简化函数
- C++ :为什么正则表达式模式"[+-/*]"匹配字符串"."?
- 从Arduino到处理的完整串行字符串
- 匹配字符串长度;查找和替换;在c++中删除HTML标签
- 匹配字符串的正则表达式,该字符串以与开头相同的序列结束
- 在输入流的开头匹配字符串
- c++在文件中匹配字符串并获得行号
- Std::regex,匹配字符串的开始/结束
- 使用Boost Spirit匹配字符串