gpt4 book ai didi

c++ - Boyer Moore算法的正确实现

转载 作者:太空狗 更新时间:2023-10-29 20:01:06 26 4
gpt4 key购买 nike

我尝试了几个实现,但它们都有错误。
在 SO 搜索给了我 http://www-igm.univ-mlv.fr/~lecroq/string/node14.html - 看起来不错,但这个实现给了我错误的结果 - 有时找不到字符串。
我花了几个小时才找到错误。

下一行看起来不错:

j += MAX(bmGs[i], bmBc[y[i + j]] - m + 1 + i);

但是 y 是 char * 并且 char 是signed!这意味着 y[i + j] 可能为负(在我的一个测试中发生了什么)。

我的问题是:在哪里可以找到 Boyer Moore 算法的正确实现?

最佳答案

char 未明确签名未签名 - 它未指定,由实现来定义。

如果算法依赖于 char 是无符号的,那么它应该显式地将输入指针转换为 unsigned char(这是 C 标准库字符串处理函数定义的工作方式 - 所有比较都已完成将字符串中的字符视为 unsigned char)。

关于c++ - Boyer Moore算法的正确实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3251465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com