常见类型介绍:
- & :有 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; }