判断字符出现是否唯一
时间: 2024-09-12 21:13:22 浏览: 33
在C语言中,判断字符串中的字符是否都唯一的常见做法是使用哈希集合(如`std::unordered_set`)或者位运算。这里我将介绍两种方法:
**方法一:使用哈希集合**
```c
#include <iostream>
#include <unordered_set>
bool isUnique(char str[]) {
std::unordered_set<char> charSet;
for (const char c : str) {
if (charSet.find(c) != charSet.end()) {
return false; // 如果字符已经存在于集合中,说明不唯一
}
charSet.insert(c);
}
return true; // 所有字符都不重复,返回true
}
int main() {
char testStr[] = "abcdefg";
if (isUnique(testStr)) {
std::cout << "字符是唯一的.\n";
} else {
std::cout << "字符不是唯一的.\n";
}
return 0;
}
```
**方法二:使用位运算(仅限ASCII字符)**
这是一种简洁但效率较低的方法,适用于ASCII字符集,因为每个字符可以用一个字节表示,可以视为一个二进制数。
```c
#include <stdio.h>
bool isUnique(char str[]) {
int checker = 0;
for (const char c : str) {
unsigned char ascii = c;
if ((checker & (1 << ascii)) != 0) { // 如果对应位置为1,则字符不唯一
return false;
}
checker |= (1 << ascii); // 将当前字符对应的位设为1
}
return true;
}
int main() {
char testStr[] = "abcdefg";
if (isUnique(testStr)) {
printf("字符是唯一的.\n");
} else {
printf("字符不是唯一的.\n");
}
return 0;
}
```
这两种方法都可以帮你检查字符是否唯一,具体选择哪种取决于你的应用场景和字符范围的要求。
阅读全文