我有一个我在网上找到的程序,它基本上告诉它是否String
包含所有唯一字符,下面是代码
private static boolean areCharsUnique(String str) {
if (str.length() > 256)
return false;
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;
}
我对这行代码感到困惑,if ((checker & (1 << val)) > 0)
而且
checker |= (1 << val);
我知道这<<
是一个左移运算符,但是在上述情况下,左移到底有什么帮助呢?
简而言之,上述程序是如何工作的?