位运算基础前置知识

上面提到的公式和推导建议大家记下来,这是后续解题的基石。
34. 判断字符是否唯一
题目链接:
题目描述:

题目示例:

解法(位图的思想):
算法思路:
利用【位图】的思想,每一个【比特位】代表一个【字符】。一个 int 类型的变量有 32 位,足够表示所有的小写字母。如果比特位是 0,表示这个字符没有出现过;如果是 1,表示该字符出现过。这样我们就可以用一个【整数】来充当【哈希表】。
这里有个小细节,如果字符串长度超过 26,根据鸽巢原理,必然存在重复字符,可以直接返回 false。
C++ 算法代码:
class Solution {
public:
bool isUnique(string astr) {
if (astr.size() > 26) return false;
int m = 0;
for (auto& s : astr) {
if ((m >> (s - )) & ) ;
m |= ( << (s - ));
}
;
}
};








