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;
    }
};

当然还有另一种做法,把字符转为数字进行比较

猜你喜欢

转载自blog.csdn.net/larklili/article/details/89488225