码迷,mamicode.com
首页 > 其他好文 > 详细

205. Isomorphic Strings

时间:2020-05-11 18:33:09      阅读:46      评论:0      收藏:0      [点我收藏+]

标签:pre   false   abc   out   遇到   一个   遍历   als   另一个   

给定两个字符串,判断其是否是同构的。何为同构,即字符串中每个字符都是单一映射的。
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;
}

 

205. Isomorphic Strings

标签:pre   false   abc   out   遇到   一个   遍历   als   另一个   

原文地址:https://www.cnblogs.com/luo-c/p/12870634.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!