题意很简单,判断两个字符串是不是同构,也就是说字母之间的映射关系是一对一的,采用map对应即可。
注意,要分别对s和t都要判断一遍,否则类似 s="abe", t="cdc"就会判断出错。
class Solution {
public:
bool isIsomorphic(string s, string t) {
map<char,char> mp;
int len=s.length();
for(int i=0;i<len;i++)
{
if(mp.find(s[i])==mp.end())//还没有指定映射
mp[s[i]]=t[i];
else if(mp[s[i]]!=t[i])
return false;
}
mp.clear();
for(int i=0;i<len;i++)
{
if(mp.find(t[i])==mp.end())
mp[t[i]]=s[i];
else if(mp[t[i]]!=s[i])
return false;
}
return true;
}
};