J'essaie d'implémenter une classe CircularSuffixArray en Java ( Tableau de suffixes Wikipédia). Dans mon approche, j'ai créé une classe interne qui implémente Comparator
pour comparer le premier caractère de chaque suffixe et, s'ils sont égaux, appeler récursivement compare
pour les caractères suivants. Quelque chose comme ça :
public class CircularSuffixArray {
private String string;
private int[] sortSuffixes;
private class SuffixesOrder implements Comparator<Integer> {
public int compare(Integer i, Integer j) {
if ((length() - 1) < i) return 1;
else if ((length() - 1) < j) return -1;
if (string.charAt(i) != string.charAt(j))
return compare(string.charAt(i), string.charAt(j));
else
return compare(i+1, j+1);
}
private int compare(char a, char b) {
return b - a;
}
}
private Comparator<Integer> suffixesOrder() {
return new SuffixesOrder();
}
// circular suffix array of s
public CircularSuffixArray(String s) {
if (s == null) throw new NullPointerException("null argument");
string = s;
sortSuffixes = new int[length()];
for (int i = 0; i < length(); i++)
sortSuffixes[i] = (length() - 1) - i;
Arrays.sort(sortSuffixes, suffixesOrder());
}
}
Mais lorsque j'ai essayé de le compiler, j'ai obtenu cette erreur :
CircularSuffixArray.java:35: error: no suitable method found for sort(int[],Comparator<Integer>) Arrays.sort(sortSuffixes, suffixesOrder());
Appelez-moi :
- Tout d'abord, si l'implémentation est correcte (je sais qu'il y a beaucoup de codes publiés mais je veux essayer par moi-même).
- Peu importe que l'algorithme soit erroné, pouvez-vous m'aider à comprendre pourquoi je reçois cette erreur ?