Java >>运算符查找字符是否唯一
我不确定这段代码是如何工作的:
public static boolean isUniqueChar2(String str) { int checker = 0; for (int i = 0; i < str.length(); ++i) { int val = str.charAt(i) - 'a'; System.out.println(str.charAt(i) ); System.out.println(val); if ((checker & (1 < 0) return false; checker |= (1 << val); } return true; }
特别是我不了解特定的>>运算符和检查器的作用
看起来这种方法只适用于小写字母。 checker
变量是一个32位位图,初始化为全0
。 代码1 << val
取1并将其移动到val
的位置, val
代表字母表的字母(a = 0,b = 1,c = 2等)。 if ((checker & (1 << val)) > 0)
返回false
因为0以外的任何值都表示重复了一个字母。 循环中的最后一行, checker |= (1 << val);
在下一次迭代之前将位置于val
位置。
和| 是按位移位和二进制或。 我建议你做二进制和按位运算符的阅读: http : //en.wikipedia.org/wiki/Bitwise_operation
a | = b只是a = a |的简写 b类似于a + = b到a = a + b