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);
}
相关推荐
鹿角片ljp27 分钟前
LeetCode 46. 全排列|吃透回溯
算法·leetcode·职场和发展
.道阻且长.3 小时前
11.LeetCode算法习题讲解--滑动窗口--将x减到0的最小操作数
算法·leetcode·职场和发展
caimouse3 小时前
ReactOS 图形系统分析(51):元文件子系统 — metafile.c
c语言·开发语言
wenyq73 小时前
LeetCode 2460. Apply Operations to an Array
算法·leetcode
青 春 记 忆4 小时前
LeetCode 142. 环形链表 II|Python 解法详解
python·leetcode·链表
小欣加油5 小时前
leetcode3069 将元素分配到两个数组中I
数据结构·c++·算法·leetcode·职场和发展
Canmag 兴隆磁性7 小时前
C 系列充磁机
c语言·开发语言·学习·永磁材料·充磁·退磁
nike0good8 小时前
April Fools Day Contest 2026 题解
算法·题解·愚人节比赛
_Narcissus_8 小时前
排序算法总结表格
c语言·数据结构·c++·笔记·算法·排序算法·总结
小雪崩8 小时前
嵌入式学习 day27:标准IO
linux·c语言·学习