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 };
1、character可以是数字 、大写字母、小写字母、标点符号等0~127个ASCIIS码字符。
所以一开始用了函数 transform(s.begin(),s.end(),s.begin(),::tolower);将所有的字母转化为小写字母就出错了。
2、此题只要求a映射到b=>其他字符不能映射到b,可以考虑加强条件,a映射到b,=>b映射到a