用c++实现一个查重功能,高效查找新的字符串是否有和之前相同的
时间: 2024-09-18 10:10:16 浏览: 32
在C++中实现高效的字符串查重功能,通常我们会采用哈希集合(如`std::unordered_set`)或者排序数组结合二分查找的方式来提高查找速度。这里我们以`std::unordered_set`为例,因为它提供了常数时间复杂度的插入和查找操作。
```cpp
#include <iostream>
#include <string>
#include <unordered_set>
bool hasDuplicate(const std::string& str, const std::unordered_set<std::string>& set) {
return set.find(str) != set.end();
}
int main() {
std::unordered_set<std::string> stringSet; // 用于存储已知字符串
// 输入新字符串并检查是否重复
while (true) {
std::string input;
std::cout << "请输入一个字符串(输入'quit'结束):";
getline(std::cin, input);
if (input == "quit") break; // 结束条件
// 如果字符串已经在集合中,提示重复
if (hasDuplicate(input, stringSet)) {
std::cout << "字符串已存在。\n";
} else {
// 否则将新字符串添加到集合,并继续接受输入
stringSet.insert(input);
std::cout << "字符串已添加。\n";
}
}
return 0;
}
```
在这个程序中,每当用户输入一个字符串时,我们会先检查它是否已在集合中。如果已经存在,就认为是重复;否则,将其添加到集合中。当用户输入"quit"时,程序退出。
阅读全文