我有麻煩理解此代碼檢測字符串中的重複項。使用移位運算符在字符串中檢測重複項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