1. 程式人生 > >205Isomorphic Strings同構字串

205Isomorphic Strings同構字串

給定兩個字串 s 和 t,判斷它們是否是同構的。

如果 s 中的字元可以被替換得到 t ,那麼這兩個字串是同構的。

所有出現的字元都必須用另一個字元替換,同時保留字元的順序。兩個字元不能對映到同一個字元上,但字元可以對映自己本身。

示例 1:

輸入: s = "egg", t = "add" 輸出: true

示例 2:

輸入: s = "foo", t = "bar" 輸出: false

示例 3:

輸入: s = "paper", t = "title" 輸出: true

說明:

你可以假設 s 和 t 具有相同的長度。

一個字元只能對映一個字元

e-r,r-e,l-r正確

a-a,b-a錯誤(因為a映射了a和b)

所以還要再設定一個map用來檢測

class Solution {
public:
    bool isIsomorphic(string s, string t) {
        map<char, char> hax;
        map<char, char> check;
        if(s.size() != t.size())
            return false;
        int len = s.size();
        for(int i = 0; i < len; i++)
        {
            if(hax[s[i]] == 0)
            {
                hax[s[i]] = t[i];
                if(check[t[i]] != 0 && check[t[i]] != s[i])
                    return false;
                check[t[i]] = s[i];
            }
            else
            {
                if(hax[s[i]] != t[i])
                    return false;
            }
        }
        return true;
    }
};