小编use*_*017的帖子

确定字符串具有所有唯一字符,而不使用其他数据结构且没有小写字符假设

这是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字符.

有没有像作者那样有效的解决方案(或者一种与作者一样高效的解决方案)?

相关问题:

java string algorithm bit-manipulation bitvector

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

algorithm ×1

bit-manipulation ×1

bitvector ×1

java ×1

string ×1