我即将实施Boyer-Moore模式匹配算法的变体(星期日算法具体),我问自己:我的字母大小是多少?
是否依赖于编码(=可能的字符数)或者我可以假设我的字母表由256个符号组成(=可以用字节表示的符号数)?
在许多其他情况下,将字符视为字节会有问题,因为根据编码,字符可以由多个字节组成,但如果在我的情况下两个字符串具有相同的编码,则相等的字符由相等的字节序列表示,因此我认为没关系。
所以:我是否必须考虑编码并假设一个由实际字符组成的字母表(Unicode为> 90000)或者我可以将文本和模式作为字节流处理吗?
答案 0 :(得分:3)
多字节编码可用于面向字节的搜索例程 IF 它是self-synchronizing。
因此,您可以安全地使用Boyer-Moore:
但不可以将其用于: