我目前正在试图确定给定的数组(它是数字1到n的排列)是否是任何二进制字符串的后缀数组。
例如对于n = 3,A = {2,1,3}是有效的,因为存在具有[01] <[1] <[101]的二进制字符串[101](使用字典顺序)。但是{2,3,1}不是有效的后缀数组,因为没有按字典顺序保存的二进制字符串。
我当前的方法只是枚举长度为n的所有二进制字符串,并检查后缀数组是否正确排序。每个字符串。这显然很慢,因为每个O(n)中都有2 ^ n个候选二进制字符串要检查。
解决此类问题的明显方法是在有效的后缀数组中查找相似性,但是到目前为止,我只能推断出一个属性:
如果A是二进制字符串的有效后缀数组,则在A前面加上1并递增A的所有值,也会产生一个有效的后缀数组。
但是,当尝试验证不以1开头的后缀数组时,此属性无法帮助我。