Java Bitset示例 - 可以回旋算法



我如何使用Java中的位操纵来检查输入字符串是否是palindrome的排列?(而不是布尔数组)

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
}

这里的基本思想是跟踪每个字母出现的次数。仅当我们有最大1个字母的最大值时返回true,在wordstr中出现奇数次数

最新更新