Почему добавление нечетного количества проверок в течение l oop не делает более оптимизированным? - PullRequest
0 голосов
/ 17 апреля 2020

Это из книги «Взлом собеседования по кодированию для проверки перестановки палиндрома».

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 таблица, но теперь мы должны запустить несколько дополнительных строк кода для каждого символа в строке. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...