常见类型介绍:
- & :有 0 就是 0
| :有 1 就是 1
^ :相同为 0 ,相异为 1 或者 无进位相加- 给定一个数确定它的二进制位的第x个数是0还是1:
- 将一个数的二进制的第x位改成1:
- 将一个数的二进制的第x位改成0:
- 提取一个数的二进制位的最右侧的1:
- 修改一个数的二进制位的最右侧的1:
- ^ 异或运算:
1、判定字符是否唯一 - 力扣(LeetCode)
思路:
- 解法一:哈希表(hash[26]表示一个哈希表)
- 解法二:使用位图,一个整型有三十二位比特位,用每个比特位存储的0 1来表示有没有重复
- 代码:
public boolean isUnique(String astr) {int n = astr.length();char[] s = astr.toCharArray();//字符串长度大于26就肯定重复if(n > 26){return false;}int tmp = 0;for(int i = 0; i < n; i++){int x = s[i] - 'a';//先判断是否在位图中if(((tmp >> x) & 1) == 1){return false;}//把当前字符添加到位图中tmp |= (1 << x);}return true;}