205. Isomorphic Strings

205. Isomorphic Strings

同构字符串的定义:串S中的某一种字符可以替换成另一种字符使得与串T相同,不限替换次数,替换映射要求两种不同字符不能映射到同一字符

class Solution {
public:
    bool isIsomorphic(string s, string t) {
        vector<char> m(257, '#');
        vector<bool> count(257, false);
        
		// 建立映射
        for(int i=0;i<s.size();++i) {
            int idx = s[i];
            if(m[idx] == '#') {
                m[idx] = t[i];
            } else if (m[idx]!=t[i]) {
                return false;
            }
        }
        
		// 检查同一字符是否存在多重映射
        for(int i=0;i<m.size();++i) {
            if (m[i] == '#') continue;
            int idx = m[i];
            if (count[idx] == false) {
                count[idx] = true;
            } else {
                return false;
            }
        }
        return true;
    }
};

#string