判断一个string中是否有字符出现两次以上
时间: 2024-09-23 19:00:59 浏览: 70
java代码-编写一个程序判断字符串“Tom”是否在另一个字符串“I am Tom, I am from China”中出现
在C++中,判断一个字符串中是否存在重复字符可以采用多种方法。其中一种简单直观的方式是利用哈希集合(如STL中的set)或数组。以下是两种常见的实现方法:
1. **使用哈希集合**:
```cpp
#include <iostream>
#include <unordered_set>
bool hasDuplicates(const std::string &str) {
std::unordered_set<char> charSet;
for (char c : str) {
if (charSet.find(c) != charSet.end()) {
return true; // 找到了重复字符
} else {
charSet.insert(c); // 插入新字符
}
}
return false; // 没有找到重复字符
}
```
这种方法的时间复杂度为O(n),n为字符串长度,因为对于每个字符我们只查找一次。
2. **使用数组(位图)**:
```cpp
#include <iostream>
bool hasDuplicates(const std::string &str) {
bool bitmap[256] = {false}; // 假设只有ASCII字符
for (char c : str) {
if (bitmap[c]) {
return true; // 位已设置,表示字符重复
} else {
bitmap[c] = true; // 设置当前字符的位置为真
}
}
return false;
}
```
这种方法的空间效率更高,时间复杂度也为O(n),但只适用于ASCII字符集内的情况。
阅读全文