Я написал этот фрагмент кода, который принимает массив строк, который необходимо переупорядочить в соответствии с вашим методом, и возвращает HashMap (map
), где ключ - это строка, а его значение - его новый индекс, всегда вычисляемый в соответствии с к вашему методу.
Я временно создал функцию hashcode(String str)
, вам придется вставить вашу.
Теперь единственное, что вам нужно сделать, это изучить map
в чтобы создать новый переупорядоченный массив строк.
CODE
public static Map<String, Integer> newIndexesMap(String[] a) {
Map<String, Integer> map = new HashMap<>();
int length = a.length;
for (int i = 0; i < a.length; i++) {
int newIndex = hashcode(a[i]) % length;
// Check that the new index is not already used by another key
if (map.containsValue(newIndex)) {
length = length * 2;
i = -1;
map.clear();
} else
map.put(a[i], newIndex);
}
return map;
}