leetcode做题笔记205. 同构字符串

给定两个字符串 s 和 t ,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

思路一:哈希表

c++解法

class Solution {
public:
    bool isIsomorphic(string s, string t) {
        unordered_map s2t;
        unordered_map t2s;
        int len1 = t.length();
        int len2 = s.length();
        if(s.size()!=t.size()){
            return false;
        }
        
        
        for (int i = 0; i < len2; ++i) {
            char x = s[i], y = t[i];
            if ((s2t.count(x) && s2t[x] != y) || (t2s.count(y) && t2s[y] != x)) {
                return false;
            }
            s2t[x] = y;
            t2s[y] = x;
        }
        return true;
    }
};

分析:

本题要求同构字符串,利用哈希表将每个出现的字符填入哈希表中,比较两个子串是否具有相同规律,若无法匹配则输出false,若遍历完字符后完全匹配则返回true,题目给出unicode编码测试会得到空指针c++无法判断出正确答案

总结:

本题考察哈希表的应用,利用哈希表将每个子串规律记录并判断是否匹配,最后返回答案即可

你可能感兴趣的:(哈希表,笔记)