我有麻烦理解此代码检测字符串中的重复项。使用移位运算符在字符串中检测重复项java
int checker = 0;
for(char ch : seed.toCharArray()){
int val = ch - 'a';
System.out.println(val);
if ((checker & (1 << val)) > 0){
// duplicate found
break;
}
checker |= (1 << val);
}
有人可以解释我一个例子,这是如何工作的?
它为找到的每个字母(a是第一位,b第二等等)设置位,然后检查该位是否已经设置过。这些位保存在一个整数中(它可以存储32个,对于字母表来说足够了,但是如果你有非字母或大写字母则不能)。 – Thilo 2012-07-17 07:49:56
你应该发布,作为回答,而不是评论:) – 2012-07-17 07:50:19
@Thilo好吧,如果我有一个位置在Java中的IF('当前字符'位集)为零,我们将其设置为1,并在ELSE上移动,如果它已经是1突围的循环会有类似的方法吗?并将只使用26位。 (考虑我只处理'a'到'z') – Vivek 2012-07-17 07:57:16