Это из книги «Взлом собеседования по кодированию для проверки перестановки палиндрома».
boolean isPermutationOfPalindrome(String phrase) {
int countOdd = 0;
int[] table new int[Character.getNumericValue('z') -
Character.getNumericValue('a') + 1];
for (char c phrase.toCharArray()) {
int x = getCharNumber(c);
if (x != -1) {
table[x]++;
if (table[x] % 2 1) {
countOdd++;
} else {
countOdd--;
}
}
}
return countOdd <= 1;
}
Насколько я понимаю, если мы делаем это таким образом, нам не нужно l oop через массив еще раз.
Тем не менее, в книге она упомянула, что она может быть еще медленнее из-за некоторых дополнительных строк: «Он имеет такое же большое время O и может быть даже немного медленнее. Мы исключили последнюю итерацию через ха sh таблица, но теперь мы должны запустить несколько дополнительных строк кода для каждого символа в строке. "