很难理解这些java函数

时间:2014-09-12 23:45:39

标签: java

这是一个检查字符串是否由唯一字符组成的函数,但我无法理解它是如何工作的。谢谢你的帮助!

public static boolean isUniqueChars(String str) {
        if (str.length() > 256) {
            return false;
        }
        int checker = 0;
        for (int i = 0; i < str.length(); i++) {
            int val = str.charAt(i) - 'a';
            if ((checker & (1 << val)) > 0) return false;
            checker |= (1 << val);
        }
        return true;
    }

1 个答案:

答案 0 :(得分:1)

此函数的目的是获取其中只包含小写字母(az)的字符串,并检查所有符号是否都是唯一的,即它将为abc返回true并为abca返回false

这是以下一种方式完成的:

  1. 对于字符串中的每个符号,我们正在计算字母表中的订单号,因此a变为0b变为1z将成为25
  2. 我们有变量checker用作mask来存储位,每位意味着我们遇到了一些字母符号
  3. 设置/测试此变量中的位,他们使用的是bitshift 1 << val
  4. 所以,要完全理解这个功能,我建议你阅读有关位掩码和位算术

    的内容