【发布时间】:2012-08-15 19:22:58
【问题描述】:
我将如何最好实现一个接受 String 参数并返回 true 或 false 的 Java 函数,具体取决于 String 是否由所有不同的字符组成。
这是一道面试题。实现应该使用位掩码来存储字符的出现,而不是其他辅助数据结构。
注意:使用位掩码的要求使这个问题不同于:
根据要求,这是我迄今为止所做的努力。如果可能,请现在重新打开问题:
public static boolean hasAllUniqueCharactersUsingBitMasking(String string) {
final int length = string.length();
final int nBitsToStoreAllUnicodeCharacters =
(int) Math.ceil(Math.log(Character.MAX_CODE_POINT) / Math.log(2d));
BitSet bitSet = new BitSet(nBitsToStoreAllUnicodeCharacters);
for (int i = 0; i < length; i++) {
char c = string.charAt(i);
if (bitSet.get(c)) {
return false;
}
bitSet.set(c);
}
return true;
}
【问题讨论】:
-
这是一个面试问题的答案。
-
请原谅,问题是什么?
-
您可以将所有字符添加到 BitSet 中,您可以检查大小是否与长度匹配,或者是否已经设置了任何位。
-
我重新表述了这个问题。重新打开?
-
你得到了我的投票。我不明白为什么要对 bitset 的大小进行复杂的计算——一个简单的
new BitSet()就可以了。
标签: java