class Solution {
public:
bool isUnique(string astr) {
/**
法1 使用数组解决
由于没指定字符是字母,假设是ASCII编码共128个
int achar[128];
for (int i = 0; i < 128; i++) {
achar[i] = 0;
}
for (int i = 0; i < astr.length(); i++) {
if (achar[astr[i]-'a'] != 0)
return false;
else {
achar[astr[i]-'a'] += 1;
}
}
return true;
**/
/**
法2. 使用位运算
int mark = 0;
for (auto c : astr) {
if (mark & (1 << (c-'a'))) {
return false;
}
else {
mark |= (1 << (c-'a'));
}
}
return true;
**/
/**
3. 正向和反向查找
for (auto c : astr) {
if (astr.find(c) != astr.rfind(c)) {
return false;
}
}
return true;
**/
/**
4. set
set<char> s;
for (auto c : astr) {
if (s.count(c) != 0) return false;
s.insert(c);
}
return true;
**/
/**
5. map
**/
map<char,int> m;
for (auto c : astr) {
if (m.count(c) != 0) return false;
m[c] += 1;
}
return true;
}
};
判定字符是否唯一
最新推荐文章于 2024-03-27 17:08:46 发布