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

String 执行Boyer-Moore模式匹配时是否必须考虑编码?,string,character-encoding,pattern-matching,boyer-moore,String,Character Encoding,Pattern Matching,Boyer Moore,我即将实现Boyer-Moore模式匹配算法的一个变体(具体来说是Sunday算法),我问自己:我的字母表大小是多少 这取决于编码(=可能的字符数)还是我可以假设我的字母表由256个符号组成(=可以用一个字节表示的符号数) 在许多其他情况下,将字符视为字节将是一个问题,因为根据编码的不同,一个字符可以由多个字节组成,但在我的例子中,如果两个字符串具有相同的编码,那么相等的字符由相等的字节序列表示,因此我认为这无关紧要 那么:我是否必须考虑编码并假设一个由实际字符组成的字母表(Unicode大于9

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

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

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


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

多字节编码可与面向字节的搜索例程一起使用,如果是这样的话

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

  • CESU-8
  • UTF-8
  • UTF-EBCDIC
但是不能将其用于:

  • 大5
  • EUC-JP
  • GBK/GB18030
  • ISO 2022
  • 约翰
  • 小码
  • 轮班JIS
  • UTF-7
  • UTF-16
  • UTF-32