自学内容网 自学内容网

【题解】205. 同构字符串(哈希表、字符串)

https://leetcode.cn/problems/isomorphic-strings/?envType=study-plan-v2&envId=top-interview-150
在这里插入图片描述

class Solution {
public:
    // 判断两个字符串是否是同构的函数
    bool isIsomorphic(string s, string t) {
        // 定义两个哈希表,分别存储s到t和t到s的映射关系
        unordered_map<char, char> s2t;
        unordered_map<char, char> t2s;
        
        // 获取字符串的长度
        int len = s.size();
        
        // 遍历字符串的每个字符
        for (int i = 0; i < len; ++i) {
            // 获取当前遍历到的字符
            int x = s[i], y = t[i];
            
            // 检查s中的字符x是否已经映射过,并且映射的值是否与t中的字符y不同
            // 同时检查t中的字符y是否已经映射过,并且映射的值是否与s中的字符x不同
            // 如果存在冲突,则说明两个字符串不是同构的,返回false
            if ((s2t.count(x) && s2t[x] != y) || (t2s.count(y) && t2s[y] != x)) {
                return false;
            }
            
            // 将s中的字符x映射到t中的字符y
            s2t[x] = y;
            
            // 将t中的字符y映射到s中的字符x
            // 这样保证了映射是双向的,即如果s中的字符x映射到t中的字符y,
            // 那么t中的字符y也应该映射回s中的字符x
            t2s[y] = x;
        }
        
        // 如果遍历完所有字符都没有发现冲突,则说明两个字符串是同构的,返回true
        return true;
    }
};

原文地址:https://blog.csdn.net/Colorful___/article/details/140690518

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!