trie

来源:互联网 发布:数据分析的统计基础 编辑:程序博客网 时间:2024/04/27 03:03
struct TrieNode {enum { LETTERS_NUM = 26 };bool hasString;struct TrieNode* next[LETTERS_NUM];TrieNode() : hasString(false) {for (int i = 0; i < LETTERS_NUM; ++i)next[i] = NULL;}};void insert(TrieNode* root, string str) {string::size_type i = 0;TrieNode* ptr = root;while (i < str.size()) {if (!ptr->next[str[i] - 'a'])ptr->next[str[i] - 'a'] = new TrieNode();ptr = ptr->next[str[i] - 'a'];i++;}ptr->hasString = true; // 允许空字符串}bool search(TrieNode* root, string str) {string::size_type i = 0;TrieNode* ptr = root;while (i < str.size()) {if (!ptr->next[str[i] - 'a'])return false;elseptr = ptr->next[str[i] - 'a'];i++;}return ptr->hasString;}

0 0
原创粉丝点击