- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的 dictionary.h 文件:
#ifndef DICTIONARY_H
#define DICTIONARY_H
class Dictionary
{
public:
struct Node
{
std::string word;
std::string definition;
static const int ALPHABET_SIZE = 26;
Node* next[ALPHABET_SIZE];
};
typedef Node TrieNode;
typedef TrieNode* Trie;
void createTrie();
bool insertTrie(std::string word, std::string definition);
bool loadDictionary(std::string fileName);
bool lookup(std::string word);
void deleteTrie();
bool writeTrie(std::string fileName);
Dictionary();
~Dictionary();
};
#endif // DICTIONARY_H
以下是我的dictionary.cpp文件:
#include <iostream>
#include <string>
#include <fstream>
#include <cctype>
#include "dictionary.h"
using namespace std;
Dictionary::Dictionary()
{
createTrie();
}
Dictionary::~Dictionary()
{
deleteTrie();
}
void Dictionary::createTrie()
{
static const int ALPHABET_SIZE = 26;
Node *TrieNode = new Node;
TrieNode->word = "";
TrieNode->definition = "";
for (int i = 0; i < ALPHABET_SIZE; i++)
{
TrieNode->next[i] = nullptr;
}
}
bool Dictionary::insertTrie(string word, string definition)
{
static const int ALPHABET_SIZE = 26;
Node *newNode = nullptr;
newNode = new Node;
for (int i = 0; i < word.length(); i++)
{
int letter = (int)word[i] - (int)'a';
newNode->word[letter];
newNode->definition;
for (int i = 0; i < ALPHABET_SIZE; i++)
{
newNode->next[i] = nullptr;
}
}
}
bool Dictionary::loadDictionary(string fileName)
{
string word;
string definition;
fstream dataFile;
dataFile.open(fileName);
cout << "Loading dictionary..." << endl;
if (dataFile)
{
getline(dataFile, word, ':');
getline(dataFile, definition);
insertTrie(word, definition);
while (!dataFile.eof())
{
getline(dataFile, word, ':');
getline(dataFile, definition);
insertTrie(word, definition);
}
dataFile.close();
return 0;
}
else
{
return 1;
}
}
bool Dictionary::lookup(string word)
{
for (int i = 0; i < word.length(); i++)
{
//char letter = (char)word[i] - (char)'a';
Node* tmp = TrieNode->word[i];
}
}
void Dictionary::deleteTrie()
{
;
}
bool Dictionary::writeTrie(string fileName)
{
fstream dataFile;
dataFile.open(fileName, fstream::out);
dataFile.close();
return 0;
}
这是我的 main.cpp:
#include <iostream>
#include <string>
#include <fstream>
#include <cctype>
#include "dictionary.h"
using namespace std;
int main()
{
string fileName;
string word;
char answer = 'y';
int loaded;
int written;
int lookedup;
Dictionary dic;
cout << "Please enter the name of the dictionary file: ";
cin >> fileName;
dic.createTrie();
loaded = dic.loadDictionary(fileName);
while (answer == 'y')
{
cout << "Would you like to look up a word? ";
cin >> answer;
if (answer == 'n')
{
cout << "Would you like to write the dictionary to a file? ";
cin >> answer;
if (answer == 'y')
{
cout << "Please enter the filename you wish to save it too: ";
cin >> fileName;
written = dic.writeTrie(fileName);
return 0;
}
}
else if (answer == 'y')
{
cout << "Enter a word: ";
cin >> word;
lookedup = dic.lookup(word);
}
else
cout << "Please select a valid option.";
}
return 0;
}
现在,当我编译它时,出现以下错误:
dictionary.cpp: In member function 'bool Dictionary::lookup(std::__cxx11::string': dictionary.cpp:83:23: error: expected primary-expression before '->' token Node* tmp = TrieNode->word[i];
真正麻烦的是我不知道这个错误是否一定是我在这一点上做错的,或者如果我不断地与指针作斗争意味着我在链条后面的某个地方搞砸了。
最佳答案
有助于指示行号,但是:Node* tmp = TrieNode->word[i];
TrieNode
是一种类型,所以这没有意义。
更不用说在 createTrie()
中,您有一个与类型 Node *TrieNode = new Node;
同名的局部变量) - 如何实现的完美示例命名约定有助于避免混淆。大多数人会告诉您“CapitalsForTypes,leadingLowerCaseForVars”(或 some_variation_of_that)。
关于C++ Trie字典——丢了两天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34124282/
我正在尝试做的事情: 构建一个移动网络应用程序,用户可以在玩拼字游戏时获得帮助找到要玩的单词 用户通过输入任意数量的字母和 0 个或多个通配符来获得单词建议 我是如何尝试做到这一点的: 使用 MySQ
假设我有一个 trie 包含多个字符串的数据结构。要在 trie 中查找字符串,我会从根开始,然后按顺序跟随标有字符串适当字符的指针,直到到达给定节点。 现在假设我想为同一组字符串构建一个“反向 tr
我正在阅读 Ingersoll、Morton 和 Farris 撰写的 Taming Text,但我不明白 solr 的数字 trie 实现如何帮助搜索文本?我对 solr.TrieField fie
我正在阅读 Ingersoll、Morton 和 Farris 的 Taming Text,但我不明白 solr 的数字 trie 实现如何帮助搜索文本?我对 solr 的 solr.TrieFiel
我正在开发一个 Trie 数据结构,其中每个节点代表一个词。所以词 st, stack, stackoverflow 和 overflow 将被排列为 root --st ---stack -----
trie 和radix trie 数据结构是一回事吗? 如果它们不相同,那么 radix trie (AKA Patricia trie) 是什么意思? 最佳答案 基数树是 trie 的压缩版本。在
我用过 video理解前缀特里树(虽然最终我试图最终得到后缀特里树)但是示例代码的链接被破坏所以我从视频中想出了这个,有两个功能,即插入和搜索如下 void insert(string word)
本文关键词:Leetcode, 力扣,Trie, 前缀树,字典树,208,Python, C++, Java 题目地址:https://leetcode.com/problems/implement
这是我使用 trie.c 和 trie.h 制作的主文件。该程序的目的是存储字典文件中的单词。 node* x = (node*)malloc(sizeof(node)); x = insert("b
因此,我必须搜索缺少字母(用于填字游戏)的单词,并且还必须维护剩余空格的可能单词列表。 现在我的问题是,我已经用谷歌搜索了 burst-trie 是否是最快的搜索算法。但是,如果我在 trie 中编写
我正在尝试将这个 trie 实现用于 ocaml:http://www.lri.fr/~filliatr/ftp/ocaml/ds/trie.ml.html 这是我对模块“M”的实现: module
我试图将 trie 中的所有单词放入字符串中,单词由 eow 字段表示,对于 trie 数据结构中的某个字符为 true,因此 trie 可以有字母但没有单词,例如“abc”在 trie 中,但“c”
我不太了解尝试字符串匹配中使用的实际算法。 我想知道为什么似乎更关注字符串匹配的后缀尝试而不是前缀尝试。我们可以不使用前缀尝试来进行子字符串匹配吗?换句话说,后缀尝试相对于前缀尝试有什么优势? 最佳答
当你构建一个特里树时,你是否将字符串/句子存储在其分支的末尾,以便在分支的末尾轻松访问它?有些人这样做,我有时也这样做,但我应该这样做吗? 有时(尤其是使用 LeetCode),我会收到此错误: Li
鉴于以下情况... (def inTree '((1 2) (1 2 3) (1 2 4 5 9) (1 2 4 10 15) (1 2 4 20 25))) 你如何将它转换
我想为高棉语(一种单词之间没有空格的语言)添加一个开源 Java 单词分割程序。开发人员已经很长时间没有开发它了,我无法联系他们了解详细信息(http://sourceforge.net/projec
我有一个字典文件(仅包含小写字母和撇号的单词),它作为特里树加载。 我有一个检查函数,它检查文件中的单词是否存在于特里树中树,无论字母大小写。 一切正常,除了撇号的单词总是拼写错误。 这是我的函数 b
我一直在练习 trie 数据结构(与类(class)作业无关)。此类用于存储字符串的子字符串。对于长度为 n 的字符串,总共有 n(n+1)/2 个子字符串。特别是 trie 的这种实现保留了自然顺序
所以我创建了一个包含大量数据的 trie,我的搜索算法非常快,但我想看看是否有人知道我如何才能让它更快。 bool search (string word) { int wordLen
我正在尝试用 C++ 实现 Trie,但出现运行时错误... 这是我的代码: #include using namespace std; struct trie{ bool word = f
我是一名优秀的程序员,十分优秀!