同构字符串
思路:第一版自己的想法,错了很多次,慢慢调试的。
A为明文 B为翻译文
因为1对1,且不能映射到同一个字符上;
先创建map,存储对应的关系
创建set ,存储已经映射的字符,防止重复映射
第一步:查询map中有无明文字符(看是否已经存储),如果没有则查看set当中有无存储;都没有则插入set,插入map
如果map当中已经存储,查看映射关系是否一致;
当整个循环遍历完成,则返回true;
(真的很傻,服了)
代码如下:
class Solution {
public:
bool isIsomorphic(string s, string t) {
map<char,char> yinse;
set<char> zifu;
int length=s.size();
int i=0;
for( i=0;i<length;++i)
{
//如果没有找到
if(yinse.find(s[i])==yinse.end())
//就插入
{
if( zifu.find(t[i])==zifu.end())
{
zifu.insert(t[i]);
}
else{
return false;
}
//插入映射关系
yinse.emplace(make_pair(s[i],t[i]));
}
else
{
//找到判断1当前的与second是否一致
if (yinse.find(s[i])->second == t[i])
{
continue;
}
else{
return false;
}
}
}
if(i==length) return true;
return false;
}
};
思路二:应为唯一映射
同时遍历s与t;
所以s.find(s[i])==t.find(t[i]);