我有一个字典文件(包含只有小写和撇号的单词)作为特里树加载。
我有一个检查函数,如果它们存在于trie中,它会检查文件的单词树,不管字母的情况。
一切都很好,除了撇号的单词总是被发现拼写错误。
这是我的功能
bool check(const char *word)
{
// creat arrow to follow letters
NODE* arrow = root;
// for every letter in word
for (int i = 0, length = strlen(word); i < length; i++)
{
int index;
if(word[i] == '\'')
{
index = 26;
} else {
index = tolower(word[i]) - ASCII_DIFFERENCE;
}
// if NULL? creat a new one and move arrow to new child
if (arrow->child[index] == NULL)
{
return false;
} else if (arrow->child[index] != NULL) // not null?
{
arrow = arrow->child[index];
}
}
return arrow->isWord;
}
我的结构:
typedef struct NODE
{
bool isWord;
struct NODE* child[ALPHA_SIZE];
} NODE;
定义
#define ASCII_DIFFERENCE 'a'
感谢任何帮助。
答案 0 :(得分:0)
撇号是十六进制27,十进制39.我认为你使用了错误的幻数。