思路:
int pos = c - 'a';
- 定一个字符a,每个字符与字符a的差值是不一样的bitmap |= (1 << pos);
- 按位存数,将位置作为字符的数据存到一个二进制的数中(bitmap & (1 << pos)) != 0);
- 判断存的二进制数的位置中,有没有这个位置,如果没有相“与”是等于0的,如果有了相“与”是不等于0的- 这样的好处就是,只需遍历一次就能得到我们需要的结果
class Solution {
public:
bool isUnique(string astr) {
int bitmap = 0;
for (char c : astr) {
int pos = c - 'a';
if ((bitmap & (1 << pos)) != 0) {
return false;
}
bitmap |= (1 << pos);
}
return true;
}
};