在执行Boyer-Moore模式匹配时,是否必须考虑编码?

时间:2011-05-19 08:41:15

标签: string character-encoding pattern-matching boyer-moore

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

是否依赖于编码(=可能的字符数)或者我可以假设我的字母表由256个符号组成(=可以用字节表示的符号数)?

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

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

1 个答案:

答案 0 :(得分:3)

多字节编码可用于面向字节的搜索例程 IF 它是self-synchronizing

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

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

可以将其用于:

  • 中文
  • EUC-JP
  • GBK / GB18030
  • ISO 2022
  • 裘哈
  • 的Punycode
  • 移-JIS
  • UTF-7
  • UTF-16
  • UTF-32