public static int[] getSuffixArray(String s) {
System.out.println(s);
int N = s.length();
int steps = Integer.bitCount(Integer.highestOneBit(N) - 1);
int rank[][] = new int[steps + 1][N];
for (int i = 0; i {
Integer originalIndex; // хранит оригинальный индекс суффикса
Integer firstHalf; // хранит ранг первой половины суффикса
Integer secondHalf; // хранит ранг второй половины суффикса
@Override
public int compareTo(Tuple tuple) {
return this.firstHalf.equals(tuple.firstHalf)
? this.secondHalf.compareTo(tuple.secondHalf)
: this.firstHalf.compareTo(tuple.firstHalf);
}
@Override
public String toString() {
return "Tuple{" +
"originalIndex="+ originalIndex +", firstHalf="+ firstHalf +", secondHalf="+ secondHalf +
'}';
}
}