这是Gayle Laakmann McDowell 撰写的Cracking the Coding Interview中的一个问题:
实现算法以确定字符串是否具有所有唯一字符.如果您不能使用其他数据结构怎么办?
作者写道:
我们可以通过使用位向量来减少空间使用量.我们假设,在下面的代码,该字符串只有较低的情况下
'a'通过'z'.这将允许我们只使用一个int.
作者有这个实现:
public static boolean isUniqueChars(String str) {
int checker = 0;
for (int i = 0; i < str.length(); ++i) {
int val = str.charAt(i) - 'a';
if ((checker & (1 << val)) > 0)
return false;
checker |= (1 << val);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
让我们说我们摆脱了"字符串只是小写'a'通过'z'" 的假设.相反,该字符串可以包含任何类型的字符ASCII字符或Unicode字符.
有没有像作者那样有效的解决方案(或者一种与作者一样高效的解决方案)?
相关问题: