不是用哈西表,使用最基础的算法
时间: 2024-11-25 11:31:45 浏览: 10
分布式存储哈西算法浅析.pdf
如果你不想使用哈希表(比如`unordered_set`),而是想要基于基础算法,你可以使用一个简单的方法,例如双指针法结合字符数组。以下是基本步骤:
1. **读取输入**:首先从用户那里获取字符串,并将其存储在一个字符数组中。
2. **分割单词**:通过两个指针 `start` 和 `end`,开始从头扫描,遇到空格就认为找到了一个单词的边界。将从`start`到`end-1`之间的字符复制到一个新的数组或字符串,然后更新`start`指向下一个空格的位置,直到遇到字符串结束。
3. **统计单词**:对于每个找到的新单词,将其视为一个独立的元素。如果它已经在之前遇到过的单词列表中,则跳过;如果不在,将其添加到单词列表中并增加计数。
4. **输出结果**:最后,输出不同单词的数量。
下面是伪代码示例:
```c
char input[1000];
int count = 0;
int start = 0;
while (get_char(input)) {
while (input[start] == ' ') start++; // 跳过空格
int end = start;
while (get_char(input) && input[end] != ' ') end++; // 找到单词的边界
input[end] = '\0'; // 结束当前单词
bool is_unique = true; // 假设它是唯一的
for (int i = 0; i < count; i++) {
if (!strcmp(words[i], input)) {
is_unique = false;
break;
}
}
if (is_unique) {
words[count++] = input;
}
start = end + 1; // 移动指针到下一个单词
}
printf("Number of unique words: %d\n", count);
```
请注意,这种方法效率较低,特别是对于长串文本,因为每次查找都需要遍历整个已知单词列表。此外,这种方法对大小写敏感。
阅读全文