我正在尝试实施块排序。在Burrows Wheeler转换文章中,块排序需要在原始字符串S中附加一大堆EOF字符,其中EOF不出现在S中。
但由于我将处理二进制文件,因此可能存在任何可能的位组合,因此我无法提前选择单个EOF字符,我保证它不会在S中。
我该如何解决这个问题?
由于EOF字符用于在一个步骤中对后缀进行排序,我已经读过您可以在不需要该EOF字符的情况下对后缀树进行排序。我应该使用后缀树吗?
答案 0 :(得分:1)
您可以使用数据容器的长度创建“虚拟”EOF,也可以使用单独的EOF表来跟踪虚拟EOF字符的字符位置。
[更新另一个想法] ...... 另一个选项,选择一个EOF字符,称之为0x00和一个转义字符,称之为0xFF。扫描输入,所有0xFF和0x00都用0xFF填充它们。也就是说,简单地逃避他们。在回写数据时反向执行