尝试在C++中有效地存储重复的子字符串
Trie to store duplicate substrings efficiently in C++
我已经编写了一个程序来实现C++中的基本Trie,每个节点都有26个子指针(用于英文字母),node类看起来像这样:
class Node
{
public:
Node* parent;
Node* child[26];
unsigned int number_of_children;
....
}
现在,可能有许多单词,如{snapple、dapple}、{distinct、吸引}等,其中有3个以上的字母匹配。我想存储这些子词的不同条目(就像上面的例子中的-apple,tract),并让其他人指向它们(比如{s-n-ptr_to_apple,d-ptr_to_apple},{d-I-s-ptr_to_tract,a-t-ptr__tract})。我认为最好在插入单词时处理这个问题,而不是在插入完成后由一个函数来执行。
我需要一些设计方面的帮助,目前我不考虑执行效率,相反,代码/设计应该紧凑。目前,我访问一个节点,检查所有非空的兄弟姐妹(通过遍历兄弟姐妹的子节点)是否与输入单词匹配,然后存储指针,以防有4个单词匹配(但代码越来越长,越来越模糊)。
传统的尝试压缩常用前缀。从本质上讲,您希望压缩常用后缀。最简单的方法是向后构建trie条目。
现在,这意味着您必须将字符串向后读取到trie中。
相关文章:
- 将字符串存储在c++中的稳定内存中
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 将字符串存储到文件下一行的变量中
- 将字符串存储在 constexpr 结构中
- 将字符串存储为十六进制而不进行转换
- 如何将 std::string 作为构造函数参数传递,并将其保存的 C 字符串存储在 void 指针中?
- 将非数字字符串存储为二进制整数
- 将 C++ 字符串存储到 char* 向量中
- C++无法将对齐的字符串存储在字符串变量中并打印出来
- 短(ASCII,每个字符 7 位)字符串存储和C++中的比较优化
- 我无法将 Excel 中的输入字符串存储为二维字符串
- 如何将此字符串存储为不同的变量
- C 将字符串存储到类中
- C :占用更多内存,将单个字符作为char或字符串存储
- 排序通过字符串C 存储在向量的对象
- 如何将可变长度字符串存储在C/C 中
- 将字符串存储在无符号长整型的向量中
- 如何使用模板解码将来自 YAML::Node 的字符串存储在类中
- 将字符串存储到数组中
- C++-将用逗号分隔的用户输入字符串存储到向量中