zoukankan      html  css  js  c++  java
  • 205. Isomorphic Strings

    给定两个字符串,判断其是否是同构的。何为同构,即字符串中每个字符都是单一映射的。
    Input: s = "egg", t = "add"
    Output: true

    Input: s = "foo", t = "bar"
    Output: false

    思路:设置两个哈希字典,一个保存s到t的映射,另一个保存t到s的映射,对两个字符串遍历,若字符串中存在单个字符不满足映射规则,则返回false。

    难点:最开始只考虑搞了一个哈希字典,也就是s到t的映射,这种只能避免一对多,遇到多对一的情况,会得到错误的结果,如:s = "abc", t = "fff"。

    bool isIsomorphic(string s, string t) {
        if (s.length() != t.length()) return false;
        unordered_map<char, char> map_s_t;
        unordered_map<char, char> map_t_s;
        for (int i = 0; i < s.length(); i++) {
            if (map_s_t.count(s[i])) {
                if (map_s_t[s[i]] != t[i]) return false;
            }
            else {
                map_s_t[s[i]] = t[i];
            }
            if (map_t_s.count(t[i])) {
                if (map_t_s[t[i]] != s[i]) return false;
            }
            else {
                map_t_s[t[i]] = s[i];
            }
        }
        return true;
    }
  • 相关阅读:
    EveryOne Piano
    3D扫描商店
    Substance PBR Guide
    C2GOASM
    Unity调试外部DLL
    BinaryReader优化
    IL
    如何画头发
    Bitrix24
    Mac查找包含指定字符串的文件
  • 原文地址:https://www.cnblogs.com/luo-c/p/12870634.html
Copyright © 2011-2022 走看看