2011-05-19 27 views
2

我即将实现Boyer-Moore模式匹配算法的变体(星期日算法具体),我问自己:我的字母大小是多少?执行Boyer-Moore模式匹配时,我是否必须考虑编码?

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

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

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

回答

3

多字节编码可以与面向字节的搜索例程一起使用IF它是self-synchronizing

所以,你可以放心地使用博耶 - 穆尔有:

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

但可以用它来与:

  • Big5
  • EUC-JP
  • GBK/GB18030
  • ISO 2022
  • 裘哈
  • 的Punycode
  • 移位-JIS
  • UTF-7
  • UTF-16
  • UTF-32
+0

+1完美答案 – 2011-05-20 06:28:58

相关问题