Пример Java BitSet - алгоритм Can Palindrome - PullRequest
0 голосов
/ 14 марта 2019

Как я могу использовать битовые манипуляции в Java, чтобы проверить, является ли входная строка перестановкой палиндрома? (а не логический массив)

1 Ответ

1 голос
/ 14 марта 2019

Java BitSet может помочь с битовыми манипуляциями.Есть много встроенных методов для использования с BitSet, некоторые упоминаются в комментариях ниже:

private static boolean canPalindrome(String wordStr) {

    BitSet bitSet = new BitSet(256);
    for (int i = 0; i < wordStr.length(); i++) {
        char letter = wordStr.charAt(i); // following letter ascii value
        if (letter != ' ') {    // space char ' ' does not affect the palindrome
            bitSet.flip(letter)   //flip turns 0->1 and 1->0;
        }
    }

    int cardinality = bitSet.cardinality(); //represents all '1' bits in BitSet
    return cardinality <= 1;   //Palindrome can hold 0-1 chars with ODD count
}

Основная идея здесь состоит в том, чтобы отслеживать количество раз, когда каждая буква появляется.возвращает TRUE, только если у нас не более 1 буквы, которая появляется в ODSt несколько раз в wordStr.

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