【发布时间】:2021-12-25 05:11:42
【问题描述】:
我在 MCU 上有一个硬件 CRC32 外设,我想用它来加速字符串搜索。通常这是通过https://en.wikipedia.org/wiki/Rolling_hash#cite_note-3 此处描述的滚动哈希函数之一完成的。我希望使用 CRC32 可以做到这一点。
我找到了类似问题https://stackoverflow.com/a/22356300/1615960 的答案,但我意识到它只能从当前的 CRC 开始并向后工作,一次将 CRC 反转一个字符。我需要做的是使用第 n 个最近的字符修剪 CRC。例如:
- 在“helloworld”中搜索“owo”。
- “hel”的 CRC32 = X
- 从 X = CRC32 of "el" = Y 中删除 "h"
- 将“l”添加到“ell”= Z 的 Y = CRC32
- 依此类推....直到找到匹配的“owo”CRC32。
我的直觉是 CRC32 不可能做到这一点,我希望有人能证明我错了。
谢谢!
【问题讨论】:
标签: hash crc32 string-search