单词检查c++怎么写,有没有代码
时间: 2024-03-10 20:47:43 浏览: 61
英文文章中单词拼写检查C++源代码
4星 · 用户满意度95%
实现单词检查可以使用哈希表或者字典树(Trie)等数据结构。这里提供一个使用字典树实现单词检查的 C++ 代码示例:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
const int MAX_NODE = 26; // 字典树最大节点数
class TrieNode {
public:
TrieNode() : is_word(false), children(MAX_NODE, nullptr) {}
bool is_word; // 标记该节点是否为单词结尾
vector<TrieNode*> children; // 子节点指针数组
};
class Trie {
public:
Trie() : root(new TrieNode()) {}
void insert(const string& word) {
TrieNode* p = root;
for (char c : word) {
int index = c - 'a';
if (!p->children[index]) {
p->children[index] = new TrieNode();
}
p = p->children[index];
}
p->is_word = true;
}
bool search(const string& word) {
TrieNode* p = root;
for (char c : word) {
int index = c - 'a';
if (!p->children[index]) {
return false;
}
p = p->children[index];
}
return p->is_word;
}
private:
TrieNode* root; // 根节点指针
};
int main() {
Trie trie;
trie.insert("hello");
trie.insert("world");
cout << trie.search("hello") << endl; // 输出 1 (true)
cout << trie.search("world") << endl; // 输出 1 (true)
cout << trie.search("hi") << endl; // 输出 0 (false)
return 0;
}
```
上述代码中,`TrieNode` 表示字典树的节点,包含一个布尔型变量 `is_word` 表示该节点是否为单词结尾,以及一个指向子节点的指针数组 `children`。`Trie` 类表示字典树,包含一个根节点指针 `root` 和 `insert` 和 `search` 两个方法。`insert` 方法用于向字典树中插入单词,`search` 方法用于查找单词是否在字典树中。在 `insert` 方法中,我们遍历单词的每个字符,若该字符对应的子节点为空,则创建一个新的节点,并将指针存入 `children` 数组中;最后将最后一个节点标记为单词结尾。在 `search` 方法中,我们同样遍历单词的每个字符,若某个字符对应的子节点不存在,则说明单词不在字典树中,返回 `false`;否则继续遍历,直到遍历完整个单词,如果最后一个节点被标记为单词结尾,则说明单词存在于字典树中,返回 `true`。
阅读全文