LeetCode: 205. 同构字符串¶
1、题目描述¶
给定两个字符串 *s* 和 t,判断它们是否是同构的。
如果 *s* 中的字符可以被替换得到 t ,那么这两个字符串是同构的。
所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。
示例 1:
输入: s = "egg", t = "add" 输出: true
示例 2:
输入: s = "foo", t = "bar" 输出: false
示例 3:
输入: s = "paper", t = "title" 输出: true
说明: 你可以假设 *s* 和 t 具有相同的长度。
2、解题思路¶
这里需要说明的就是,字符串中,相同的字符,不管出现在什么位置上,都应该是相同的字符,不相同的字符不用管
创建一个映射数组,第一个字符串的一个字母映射到第二个字符串,遇到了以后就来判断,不相等,返回false;
bool isIsomorphic(char* s, char* t) { int sTot[256] = {0}; int tTos[256] = {0}; int size = strlen(s); for (int i = 0; i < size; i++) { if (sTot[s[i]] == 0) { sTot[s[i]] = t[i]; } if(tTos[t[i]] == 0){ tTos[t[i]] = s[i]; } if(sTot[s[i]] != t[i] || tTos[t[i]] != s[i]){ return false; } } return true; }