205. Isomorphic Strings
题目描述和难度
- 题目描述:
给定两个字符串 s 和 t,判断它们是否是同构的。
如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。
所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。
示例 1:
输入: s ="egg",
t ="add"
输出: true
示例 2:
输入: s ="foo",
t ="bar"
输出: false
示例 3:
输入: s ="paper",
t ="title"
输出: true
说明:
你可以假设 s 和 t 具有相同的长度。
- 题目难度:简单。
- 英文网址:205. Isomorphic Strings 。
- 中文网址:205. 同构字符串 。
思路分析
求解关键:建立映射关系的时候,要检查是不是两个 key 对应到同一个 value 上了。
- 使用 Hash 表进行映射关系的建立,和检查 value 是否重复。
- 对于字符映射的问题而言,Hash 表还可以使用字符数组得到同样的效果。
参考解答
参考解答1
public class Solution4 {
public boolean isIsomorphic(String s, String t) {
int slen = s.length();
int tlen = t.length();
if (slen != tlen) {
return false;
}
Character[] map = new Character[256];
boolean[] set = new boolean[256];
for (int i = 0; i < slen; i++) {
char key = s.charAt(i);
char value = t.charAt(i);
if (map[key] == null) {
// 建立映射关系
if (set[value]) {
return false;
}
map[key] = value;
set[value] = true;
} else {
if (map[key] != value) {
return false;
}
}
}
return true;
}
}
本篇文章的地址为 https://liweiwei1419.github.io/leetcode-solution/leetcode-0205-isomorphic-strings ,如果我的题解有错误,或者您有更好的解法,欢迎您告诉我 liweiwei1419@gmail.com 。