c - 检查单词是否与搜索词匹配的函数
问题描述
我有以下工作,但想知道是否有更好的方法。更好的意思是更高效和或更紧凑。
该函数检查一个 trie 以查看单词是否在 trie 中。
bool check(const char *word)
{
int nodeIdx = hash(word);
if (nodeIdx < 0)return false;
nodeWords * searchNode;
searchNode = nodeArray[nodeIdx]; //nodeArray is global
bool whileFlag = true, returnFlag = false;
do
{
if (strcmp(word,searchNode->word) == 0 )
{
whileFlag = false;
returnFlag = true;
}
else if (strcmp(word,searchNode->word) < 0 )
{
if(searchNode->left == NULL)
{
whileFlag = false;
}else{
searchNode = searchNode->left;
}
}else{
if(searchNode->right == NULL)
{
whileFlag = false;
}else{
searchNode = searchNode->right;
}
}
}while (whileFlag);
free(searchNode);
return returnFlag;
}
例如,我们可以这样重写函数:
bool check(const char *word)
{
int nodeIdx = hash(word);
if (nodeIdx < 0)return false;
nodeWords * searchNode;
searchNode = nodeArray[nodeIdx];
bool returnFlag = false;
do
{
if (strcmp(word,searchNode->word) == 0 )returnFlag = true;
else if (strcmp(word,searchNode->word) < 0 && searchNode->left != NULL) searchNode = searchNode->left;
else if (strcmp(word,searchNode->word) > 0 && searchNode->right != NULL) searchNode = searchNode->right;
}while (searchNode->left != NULL || searchNode->right != NULL || strcmp(word,searchNode->word) == 0);
return returnFlag;
}
解决方案
推荐阅读
- c - C:尝试使用 \ 将 fprintf() 格式字符串拆分为多行并在行的开头添加制表符
- python-3.x - 如何从查询集 django 中选择模型的实例?
- android - onitemclick 侦听器在对话框中不起作用
- python - 如何从 jupyter 笔记本中删除停用的 conda 环境名称?
- amazon-ses - Amazon SES 未交付到新的 g 套件地址
- pyspark - Pyspark:根据两列中的空值过滤数据框
- ios - 以编程方式绘制的圆圈没有出现 SwiftUI
- excel - Excel COM 粘贴不起作用 - 无法获取 Worksheet 类的粘贴属性
- docker - 谷歌运行 - 每个容器实例是否得到 443,如果这是我需要的
- api - 如何将 Julia 与 HTML 网页集成 - 如何从运行在 Web 浏览器中的应用程序调用 Julia 函数