leetcode: Isomorphic Strings

来源:互联网 发布:php zrem 编辑:程序博客网 时间:2024/04/30 12:41
class Solution {public:    bool isIsomorphic(string s, string t) {        if(s.empty() && t.empty())            return true;        int sl = s.length();        int tl = t.length();        char * ch = new char[sl];        if(sl != tl)            return false;        map<char,char>m;        map<char,char>::iterator it;         set<char> st;        int i = 0;        while(i < sl){            it = m.find(s[i]);            if(it == m.end()){                m.insert(pair<char,char>(s[i],t[i]));                if(st.find(t[i]) != st.end())                    return false;                else                    st.insert(t[i]);            }            i++;        }        i = 0;        while(i < sl){            it = m.find(s[i]);            ch[i] = it->second;            i++;        }        string k(ch);        return k == t;    }};

另一种更快的方法

class Solution {public:    bool isIsomorphic(string s, string t) {        int sTotTable[256];        int tTosTable[256];        int size = s.length();        for (int i = 0; i < 256; i++){            sTotTable[i] = 300;            tTosTable[i] = 300;        }        for (int i = 0; i < size; i++){            if (sTotTable[s[i]] == 300){                if (tTosTable[t[i]] == 300){                    sTotTable[s[i]] = t[i];                    tTosTable[t[i]] = s[i];                }                else{                    return false;                }            }            else{                if (sTotTable[s[i]] != t[i]){                    return false;                }            }        }        return true;    }};
0 0