LeetCode打卡第八天

前言

LeetCode打卡第八天,今天的题目是给定两个字符串 s 和 t ,判断它们是否是同构的


一、Python代码

class Solution(object):
    def isIsomorphic(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        if (len(s) != len(t) or len(set(s)) != len(set(t))):
            return False
        z = dict()
        for i in range(len(s)):
            if s[i] in z:
                if z[s[i]] != t[i]:
                    return False
            else:
                z[s[i]] = t[i]
        for k, v in z.items():
            for m, n in z.items():
                if (k == m and v != n) or (k != m and v == n):
                    return False
        return True

        

首先比较两个字符串长度是否一致
之后创建一个空的字典,遍历两个字符串,将s作为key,t作为value,如果字典中有一样的key,就比较该下标的t是否一样
如果没有一样的key,将改下标的s和t值存入字典。
最后遍历字典,查看是否有value一样但是key不一样的元素。

二、C++代码

1.源代码

class Solution {
public:
    bool isIsomorphic(string s, string t) {
        if (s.size() != t.size()) {
            return false;
        }
        std::map<char, char> s_to_t;  // 从 s 到 t 的映射
        std::map<char, char> t_to_s;  // 从 t 到 s 的映射

        for (int i = 0; i < s.size(); i++) {
            char s_char = s[i];
            char t_char = t[i];
            // 检查 s 到 t 的映射是否一致
            if (s_to_t.find(s_char) != s_to_t.end() && s_to_t[s_char] != t_char) {
                return false;
            }
            // 检查 t 到 s 的映射是否一致
            if (t_to_s.find(t_char) != t_to_s.end() && t_to_s[t_char] != s_char) {
                return false;
            }
            // 建立双向映射
            s_to_t[s_char] = t_char;
            t_to_s[t_char] = s_char;
        }
        return true;
    }
};

首先还是比较两个字符串长度是否一致。
之后建立一个双向的映射,两个map,s和t互为key和value。
使用map.find()查找两个map中是否有key一样,但是value不一样的元素

总结

今天的收获在于学会了使用双向映射,建立两个map,互为key,value,查找是否有相同的key不同value的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值