3

我即将实现 Boyer-Moore 模式匹配算法的变体(具体来说是星期日算法),我问自己:我的字母大小是多少?

它取决于编码(= 可能的字符数)还是我可以假设我的字母表由 256 个符号组成(= 可以用一个字节表示的符号数)?

在许多其他情况下,将字符视为字节将是一个问题,因为根据编码,一个字符可以由多个字节组成,但如果在我的情况下,两个字符串都具有相同的编码,那么相等的字符由相等的字节序列表示,所以我假设没关系。

所以:我是否必须考虑编码并假设一个由实际字符组成的字母表(对于 Unicode 而言 > 90000),还是我可以将文本和模式作为字节流处理?

4

1 回答 1

4

多字节编码可以与面向字节的搜索例程一起使用,如果它是自同步的

因此,您可以安全地使用 Boyer-Moore:

  • CESU-8
  • UTF-8
  • UTF-EBCDIC

不能将其用于:

  • 大五
  • EUC-JP
  • GBK/GB18030
  • 国际标准化组织 2022
  • 约哈布
  • 小码
  • Shift-JIS
  • UTF-7
  • UTF-16
  • UTF-32
于 2011-05-20T05:50:34.120 回答