Java的>>操作发现,如果字符是独特的[关闭](Java >> operator fi

2019-08-04 10:17发布

我真的不知道该代码是如何工作的:

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;
}

我特别不理解特定>>运算器和检测器的作用

Answer 1:

看起来这种方法仅设计为小写字母工作。 所述checker变量是一个32比特的位图初始化为全0秒。 代码1 << val取1,并将其移入的位置val ,其表示字母(A = 0,B = 1,C = 2,等等)的信。 if ((checker & (1 << val)) > 0)返回false ,因为0以外的任何值将指示一个信已重复。 在循环,最后一行checker |= (1 << val); 设置在位置的位val下一次迭代之前。



Answer 2:

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

A | = B只是A = A的速记| b类似像+ = B到A = A + B



文章来源: Java >> operator find if characters are unique [closed]