Java>> operator查找字符是否唯一

时间:2012-12-20 23:50:16

标签: java string character operator-keyword

我不确定此代码的工作原理:

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 << val)) > 0)
            return false;
        checker |= (1 << val);
    }
    return true;
}

特别是我不明白特别的&gt;&gt;运算符和检查器的作用

2 个答案:

答案 0 :(得分:4)

看起来此方法仅适用于小写字母。 checker变量是初始化为所有0的32位位图。代码1 << val取1并将其移至val的位置,该位置代表字母表中的字母(a = 0,b = 1,c = 2等)。 if ((checker & (1 << val)) > 0)返回false,因为0以外的任何值都表示重复了一封信。循环中的最后一行checker |= (1 << val);在下一次迭代之前将位设置在位置val

答案 1 :(得分:0)

  
    

和|是按位移位和二进制或。我建议您阅读二进制和按位运算符:http://en.wikipedia.org/wiki/Bitwise_operation

  

a | = b只是a = a |的缩写b类似于a + = b到a = a + b