一.题目解析

算法一:哈希表
哈希表储存字母的种类和数量(也可以是bool)
代码实现:
cpp
class Solution {
public:
int hammingWeight(int n) {
int count=0;
for(int i=0;i<32;i++)
{
if(((n>>i)&1)==1)count++;
}
return count;
}
};
算法二:位图
这里只有26个字母,字符-'a'变成对应的数字(0~26,a~z),1表示出现过,0表示没出现过
通过n=n|(1<<x)将该数插入位图中
代码实现
cpp
class Solution {
public:
bool isUnique(string astr) {
int n=astr.size();
if(n>26)return false;//鸽巢原理
int bitmap=0;
for(auto ch:astr)
{
int i=ch-'a';//字母对应数
if(((bitmap>>i)&1)==1) return false;//判断是否相同
bitmap|=1<<i;
}
return true;
}
};//位图