对于作业问题,我们给出一个长度为n的字符串,并且我们被告知要创建已排序的后缀并对它们进行排序,以便我们可以返回对应于第i个原始索引的字符串。排序列表中的索引。例如,给定字符串" bears",我们如下:
!
换句话说,final_index [i]值为2意味着最初在索引2处的后缀位于排序列表中的索引i处。
我的问题是显而易见的解决方案,使用substring并构建sorted_suffixes然后对它们进行排序是不允许的,因为我们不允许显式构建后缀。如何克服这种限制?谢谢您的帮助。
答案 0 :(得分:2)
使用比较器通过调用对后缀进行排序 public static void sort(T [] a,Comparator c);
将字符串转换为字符数组
在比较器定义比较中,它按字典顺序排序后缀,一次扫描一个字符...... 你不需要明确地存储后缀....
使用所有包装类而不是原始类