字符串同构

*****************************************

     题目  判断s和t是不是一种模式,eg add  cpp是同构

*****************************************

     思路:用hash表,将s、t中所有出现过的字符 对应到1-26,比较对应的数字是否相同

class Solution {
public:
    bool isIsomorphic(string s, string t) {

        if(s.length()!= t.length())
        {
            return false;
        }   
        
        map<char ,int>mapchar;
        map<char ,int>mapchar1;
        
        for(int i=0;i<s.length();i++)
        {
            if(mapchar.find(s[i]) == mapchar.end())
            {
                if(mapchar1.find(t[i]) != mapchar1.end())
                   {
                       return false;
                       
                   }
                mapchar.insert(pair<char,int>(s[i],i));
                mapchar1.insert(pair<char,int>(t[i],i));   
            }
            else
            {       if(mapchar1.find(t[i]) == mapchar1.end())
                        return false;
                   
                    if(mapchar1[t[i]] != mapchar[s[i]])
                    {   
                        return false;
                    }
            }
        }
        return true;
    }
};

  

posted @ 2016-12-26 11:26  *桔子*  阅读(1371)  评论(0编辑  收藏  举报