Isomorphic Strings

 1 class Solution {
 2 public:
 3     bool isIsomorphic(string s, string t) {
 4         map<char,char> mp;
 5         int sl=s.size(),st=t.size();
 6         if(sl!=st)
 7             return 0;
 8         int used[300];
 9         memset(used,0,sizeof(used));
10         int i;
11         for(i=0;i<st;i++)
12         {
13             if(mp[s[i]]==t[i])
14                 continue;
15             if(mp[s[i]]==0&&used[t[i]]==0)
16             {
17                 mp[s[i]]=t[i];
18                 used[t[i]]=1;
19                 continue;
20             }
21             return 0;
22         }
23         return 1;
24     }
25 };
View Code

1、character可以是数字 、大写字母、小写字母、标点符号等0~127个ASCIIS码字符。

 所以一开始用了函数       transform(s.begin(),s.end(),s.begin(),::tolower);将所有的字母转化为小写字母就出错了。

2、此题只要求a映射到b=>其他字符不能映射到b,可以考虑加强条件,a映射到b,=>b映射到a

原文地址:https://www.cnblogs.com/varcom/p/4560242.html