C语言 | Leetcode C语言题解之第211题添加与搜索单词-数据结构设计

题目:

题解:

cpp 复制代码
typedef struct WordDictionary_tag{
    struct WordDictionary_tag *next[26];
    bool finish;
} WordDictionary;

/** Initialize your data structure here. */

WordDictionary* wordDictionaryCreate() {
    WordDictionary *wd = (WordDictionary*) malloc(sizeof(WordDictionary));
    memset(wd->next, 0, sizeof(wd->next));
    wd->finish = false;
    return wd;
}

void wordDictionaryAddWord(WordDictionary* obj, char * word) {
    for (int i = 0; word[i]; i++){
        if (obj->next[word[i] - 'a']){
            obj = obj->next[word[i] - 'a'];
            continue;
        }
        obj->next[word[i] - 'a'] = (WordDictionary*) malloc(sizeof(WordDictionary));
        obj = obj->next[word[i] - 'a'];
        memset(obj->next, 0, sizeof(obj->next));
        obj->finish = false;
    }
    obj->finish = true;
}

bool wordDictionarySearch(WordDictionary* obj, char * word) {
    if (!obj){
        return false;
    }
    if (!word[0]){
        return obj->finish;
    }
    if (word[0] != '.'){
        return wordDictionarySearch(obj->next[word[0] - 'a'], word + 1);
    }
    for (int i = 0; i < 26; i++){
        if (wordDictionarySearch(obj->next[i], word + 1)){
            return true;
        }
    }
    return false;
}

void wordDictionaryFree(WordDictionary* obj) {
    for (int i = 0; i < 26; i++){
        if (obj->next[i]){
            wordDictionaryFree(obj->next[i]);
        }
    }
    free(obj);
}
相关推荐
繁星蓝雨9 小时前
C++的设计与演进大纲(如何从C语言一步步成长为C++)
c语言·开发语言·c++·c++历史·c++演进
yutian060610 小时前
C: Unix UTC 时间戳转为 UTC+8 北京时间
c语言·unix
彧azz13 小时前
数据结构:关于图的学习
c语言·数据结构·笔记·学习·算法
彧azz13 小时前
二叉搜索树学习记录
c语言·数据结构·笔记·算法
番茄灭世神17 小时前
汇顶模拟前端GH3220使用备忘录
c语言·单片机·传感器·模拟芯片·电生理信号处理
土司大王19 小时前
LeetCode 17 电话号码的字母组合:Java 回溯模板、多叉决策树与复杂度分析
java·leetcode·决策树
find1star19 小时前
LeetCode 25:K 个一组翻转链表
java·数据结构·算法·leetcode·链表·职场和发展·动态规划
Brilliantwxx21 小时前
【STM32 】把 printf 搬到串口上 —— C 标准 IO 函数重定向与多文件工程搭建(实战串口电灯)
c语言·开发语言·stm32·单片机·嵌入式硬件·架构·ecmascript
wuminyu21 小时前
Kafka利用sendfile与Page Cache实现高性能传输剖析
java·linux·c语言·jvm·c++