<&书信电报;和|=在Java中

<&书信电报;和|=在Java中,java,string,operators,unique,Java,String,Operators,Unique,有一个问题是在Java中实现一个代码,我必须在不创建新数据结构的情况下查找字符串是否具有唯一字符 Java实现如下所示: public static boolean isUniqueChars(String str) { int checker = 0; for (int i = 0; i < str.length(); ++i) { int val = str.charAt(i) - 'a'; if ((checker &

有一个问题是在Java中实现一个代码,我必须在不创建新数据结构的情况下查找字符串是否具有唯一字符

Java实现如下所示:

public static boolean isUniqueChars(String str) { 
    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; 
}
public静态布尔值isUniqueChars(String str){
int-checker=0;
对于(int i=0;ichecker |=(11.对于此符号:
>N
表示(如果您将其视为二进制数字字符串):

最右边的
N
位被丢弃

根据需要复制最左边的位,以将结果填充到原始大小(32或64位), 例如

00000000000000000000000000101011 >> 2 -> 00000000000000000000000000001010

11111111111111111111111111010100 >> 2 -> 11111111111111111111111111110101


3.对于此符号:
|=

它表示按位包含或和赋值运算符

例如:

            checker |= (1<<val) 
is same as  checker |= (2^val)  
is same as  checker = checker | (2^val)    (*)


1.对于此符号:
>N
表示(如果您将其视为二进制数字字符串):

最右边的
N
位被丢弃

根据需要复制最左边的位,以将结果填充到原始大小(32或64位), 例如

00000000000000000000000000101011 >> 2 -> 00000000000000000000000000001010

11111111111111111111111111010100 >> 2 -> 11111111111111111111111111110101


3.对于此符号:
|=

它表示按位包含或和赋值运算符

例如:

            checker |= (1<<val) 
is same as  checker |= (2^val)  
is same as  checker = checker | (2^val)    (*)


使用ZiPROX的有益提示,(1)P>使用ZiPROX的有用提示:(1位位和位移位操作员:您是否考虑过位和位移位操作员:您是否考虑过咨询?他没有询问<代码> > /代码>,他问“代码>他没有询问<代码> > /代码>,他问了<代码>。

    0 OR 0 = 0  , 1 OR 0 = 1
    1 OR 1 = 1  , 0 OR 1 = 1
checker & (1<<val)
checker |= (1<<val)
checker = (checker | (1<<val))