- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
首先我对算法知之甚少,所以请多多包涵。
据我了解,使用长 key 时 Boyer Moore 算法最快。那么,如果我有一个非常短的键(例如 10 个字符)和大量要搜索的文本(超过 10,000 个字符)怎么办?Boyer Moore 会是这种情况下的最佳搜索算法吗?
如果不是会是什么?
最佳答案
根据 String searching algorithm , “Boyer–Moore 字符串搜索算法一直是实用字符串搜索文献的标准基准。”它并不总是最快的,但总的来说是可行的方法。
当您谈论像 10,000 个字符这样的小文本缓冲区时,Knuth-Morris-Pratt 和 Boyer-Moore 在运行时间上非常接近。在现代计算机上运行时,即使是简单的字符串搜索在 10K 缓冲区上也会快得令人眼花缭乱。我怀疑您会发现 KMP 和 Boyer-Moore 两者在 10,000 个字符的缓冲区中搜索 10 个字符的字符串之间的差异将在纳秒级。
这种情况下最好的搜索算法?这将取决于您需要调用它的频率。如果它每秒被调用几次(最多),我可能会编写一个天真的搜索并将其保留在那里。与您的程序的运行时间相比,Boyer-Moore 搜索和在那个小缓冲区上的简单搜索之间的差异微不足道,您的优化工作最好花在其他地方。如果我必须每秒调用它数百或数千次,我会花时间编写优化的 Boyer-Moore 搜索。
关于string - Boyer Moore 寻找小 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7585597/
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我了解不良字符启发法的工作原理。当找到不匹配的字母x时,只需移动模式,以使模式中最右边的x与字符串中的x对齐。而且很容易在代码中实现。 我想我也了解后缀启发式的工作原理。当找到合适的后缀s时,请在模式
我一直在尝试了解Boyer-Moore字符串搜索算法中的移位规则,但还不了解它们。我在wikipedia上阅读过,但这太复杂了! 如果有人以简单的方式列出规则,那将有很大的帮助。 最佳答案 在Boye
我在理解 Boyer Moore 字符串搜索算法时遇到问题。 我正在关注以下文档。 Link 我无法弄清楚 delta1 和 delta2 在这里的真正含义是什么,以及他们如何应用它来查找字符串搜索算
我尝试了几个实现,但它们都有错误。 在 SO 搜索给了我 http://www-igm.univ-mlv.fr/~lecroq/string/node14.html - 看起来不错,但这个实现给了我错
我正在尝试使用 2D 数组从 boyer moore 实现错误字符规则以进行子字符串搜索,我遇到了我看到我的 arr[0][1] 与 arr[1][0] 重叠的情况这引起了问题。我试图遍历 VS 中的
我正在尝试在大量文本中实现精确的文本搜索。为此,我找到了一些针对 c# 的 Boyer Moore 实现示例,但现在我无法理解它是如何工作的。 例如,如果我有字符串 this is sample te
我会说是,因为使用了一个右表来确定您必须跳过多少字符。对此有什么想法吗? 最佳答案 Dynamic programming is when you use past knowledge to make
根据我的理解,找到多数元素的 Boyer-Moore 多数表决算法是 O(1),即它是常数,与输入的大小不成比例。那为什么要wiki link提到对数空间 {\displaystyle O(\log
关于此算法中的两个转换规则(坏字符和好后缀),我有些不明白。他们是否一起工作,以及究竟是什么决定了在每种情况下或轮类中部署哪一个。 This综合解释以 SSIMPLE EXAMPLE 的示例结束,这让
在Boyer-Moore string search algorithm wiki 链接,据说 Boyer-Moore 的最坏情况复杂度是 O(m+n) 如果模式没有出现在文本中 O(mn) 如果模式
我不是专业程序员,所以请多多包涵。我正在四处寻找为什么 haystack 和 needle 的初始“对齐”不应该在 needle 的最后一个字符与 haystack 中的相同字符的第一次一致时进行,但
我正在研究 Boyer-Moore 算法(来自 here),我有一个快速的问题 - 第二遍的需要是什么(它基本上只是通过找到该元素的频率来“确认”)。第一个传递本身不是保证找到的元素是多数元素吗?我考
我即将实现 Boyer-Moore 模式匹配算法的变体(具体来说是星期日算法),我问自己:我的字母表大小是多少? 这取决于编码(= 可能的字符数)还是我可以假设我的字母表包含 256 个符号(= 可以
我在项目中大量使用字符串,因此我正在寻找一个快速的库来处理它们。我认为 Boyer-Moore 算法是最好的。 有免费的解决方案吗? 最佳答案 您可以考虑实现 Boyer–Moore 算法的以下资源:
我目前正在试验一个非常简单的 Boyer-Moore 变体。 总的来说,我的实现是有效的,但如果我尝试在循环中使用它,包含干草堆的字符指针就会变得困惑。我的意思是其中的字符被更改或混合。 结果是一致的
我想获得 Boyer-Moore-Horspool 实现来搜索文本文件中的某些字符串。这是我的代码: #include #include #include int bmhSearch(char
我正在用 python 实现 boyer moore 算法,我需要计算一个子串在一个字符串中出现了多少次。 我的字符串存储在一个向量中: string = ['A', 'B', 'B', 'C', '
我一直在研究 Boyer-Moore sting 搜索算法,并从 Shriphani Palakodety 的基本代码集开始,我创建了 2 个附加版本(v2 和 v3)——每个版本都进行了一些修改,例
我是一名优秀的程序员,十分优秀!