文章目录
- 小试牛刀
- 进入正题
没写代码的题,其链接点开都是有代码的。开始前请思考下图:
小试牛刀
位1的个数
class Solution {
public:
int hammingWeight(int n) {
int res = 0;
while (n) {
n &= n - 1;
res++;
}
return res;
}
};
比特位计数
class Solution {
public:
vector<int> countBits(int n) {
vector<int> res(n + 1);
for (int i = 0; i < n + 1; ++i) {
res[i] = count(i);
}
return res;
}
int count(int n) {
int res = 0;
while (n) {
n &= n - 1;
res++;
}
return res;
}
};
汉明距离
进入正题
判断字符是否唯一
class Solution {
public:
bool isUnique(string astr) {
if (astr.size() > 26)
return false;
int bit = 0;
for (auto e : astr) {
if (bit >> (e - 'a'))
return false;
else
bit |= 1 << (e - 'a');
}
return true;
}
};
判断是否为子符重排
两整数之和
只出现一次的数字3
丢失的数字
消失的两个数字
该题为前两题解法相结合