【问题标题】:Java >> operator find if characters are unique [closed]Java >>运算符查找字符是否唯一[关闭]
【发布时间】:2012-12-08 13:43:29
【问题描述】:

我不太确定这段代码是如何工作的:

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

特别不明白>> 运算符和checker的作用

【问题讨论】:

标签: java string character operator-keyword


【解决方案1】:

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

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

【讨论】:

  • 你在哪里提到了按位移位?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2014-06-27
    • 2015-01-28
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    相关资源
    最近更新 更多