Leetcode-同构字符串
45.同构字符串
题目内容:
代码及思路:
刚看到这道题的时候,不知道该怎么下手。题目看过去很简单但是建模起来就比较费解,我觉得可以这么理解,同构的意思就是两个字符串s和t,每个字符串中相同位置的字符存在着一个恒等映射关系,以s="egg",t="add"为例,存在着以下映射关系:e->a,g->d。因此该组s与t存在这个映射关系因此是同构的,而对于s="egg",t="abc"来说,e->a,g->b,g->c,g存在两种映射关系,因此就不是同构字符串。
分析完特点之后我们就可以利用关联容器map来存放映射关系:
class Solution {
public:
bool isIsomorphic(string s, string t) {
unordered_map<char, char> map1, map2;
for (int i = 0; i < s.length(); i++)
{
map1[s[i]] = t[i];
map2[t[i]] = s[i];
}
for (int i = 0; i < s.length(); i++)
{
if (map1[s[i]] != t[i] || map2[t[i]] != s[i])
return false;
}
return true;
}
};
当然还有另一种做法,把字符转为数字进行比较