205. Isomorphic Strings


做题历程:

  1. 2016/Oct/19,应该做了不止2次了,本次耗时5分钟独立解出

本题难度算是比较简单的。需要注意两种情况:

  1. a -> e并且a -> f这种很好用unordered_map<char, char>避免
  2. a -> e并且b -> e这种用Hashmap就无能为力了,要再原来的基础上添加一个unordered_set<char>记录stringt,检测hashmaphashsetsize()是否相等

代码如下:

class Solution {
public:
    bool isIsomorphic(string s, string t) {
        if (s.length() != t.length()) {
            return false;
        }
        unordered_set<char> char_set;
        unordered_map<char, char> char_map;
        for (int i = 0; i < s.length(); ++i) {
            auto found = char_map.find(s[i]);
            char_set.insert(t[i]);
            if (found == char_map.end()) {
                char_map[s[i]] = t[i];
            }
            else {
                if (char_map[s[i]] != t[i]) {
                    return false;
                }
            }
        }
        return char_map.size() == char_set.size();
    }
};

results matching ""

    No results matching ""