C语言 | Leetcode C语言题解之第205题同构字符串

题目:

题解:

cpp 复制代码
struct HashTable {
    char key;
    char val;
    UT_hash_handle hh;
};

bool isIsomorphic(char* s, char* t) {
    struct HashTable* s2t = NULL;
    struct HashTable* t2s = NULL;
    int len = strlen(s);
    for (int i = 0; i < len; ++i) {
        char x = s[i], y = t[i];
        struct HashTable *tmp1, *tmp2;
        HASH_FIND(hh, s2t, &x, sizeof(char), tmp1);
        HASH_FIND(hh, t2s, &y, sizeof(char), tmp2);
        if (tmp1 != NULL) {
            if (tmp1->val != y) {
                return false;
            }
        } else {
            tmp1 = malloc(sizeof(struct HashTable));
            tmp1->key = x;
            tmp1->val = y;
            HASH_ADD(hh, s2t, key, sizeof(char), tmp1);
        }
        if (tmp2 != NULL) {
            if (tmp2->val != x) {
                return false;
            }
        } else {
            tmp2 = malloc(sizeof(struct HashTable));
            tmp2->key = y;
            tmp2->val = x;
            HASH_ADD(hh, t2s, key, sizeof(char), tmp2);
        }
    }
    return true;
}
相关推荐
Lazionr22 分钟前
数据结构入门:栈实现全解析
c语言·数据结构
踩坑记录24 分钟前
leetcode hot100 1143. 最长公共子序列 mediuim 递归优化
leetcode
光子物联单片机26 分钟前
STM32传感器模块编程实践(二十)ESP8266实现MQTT连接OneNET上传温湿度数据
c语言·stm32·单片机·嵌入式硬件·mqtt
无限进步_34 分钟前
【C++】寻找数组中出现次数超过一半的数字:三种解法深度剖析
开发语言·c++·git·算法·leetcode·github·visual studio
Lazionr35 分钟前
数据结构队列详解:从概念到代码实现
c语言·数据结构
人道领域43 分钟前
【LeetCode刷题日记】150.逆波兰表达式求值
java·数据结构·算法·leetcode
踩坑记录1 小时前
leetcode hot100 136. 只出现一次的数字 easy 技巧 位运算 异或 XOR(^)
leetcode
流年如夢1 小时前
编译前奏:预处理全面梳理
c语言
freshman_y12 小时前
一篇介绍C语言中二级指针和二维数组的文章
c语言·开发语言
6Hzlia12 小时前
【Hot 100 刷题计划】 LeetCode 199. 二叉树的右视图 | C++ DFS 逆序遍历
c++·leetcode·深度优先