205. 同构字符串 哈希表保存映射
程序员文章站
2024-03-17 08:56:58
...
205. 同构字符串
难度:简单
题目描述
解题思路
1、用哈希表保存映射关系
/*
* 205. 同构字符串
* 2020/6/10
*/
public boolean isIsomorphic(String s, String t) {
if(s.length() != t.length())
return false;
HashMap<Character, Character> hashMap = new HashMap<>(); //哈希表存储一个映射
char[] sh = s.toCharArray();
char[] th = t.toCharArray();
for (int i = 0;i < sh.length;i++) {
char c1 = sh[i];
char c2 = th[i];
if(hashMap.containsKey(c1)) { //相应位置对应的字母一定要一致
if(hashMap.get(c1) != c2)
return false;
}else {
if(!hashMap.containsValue(c2)) {
//不能把两个字符映射到同一个字符,如果已经存在到这个字母的映射
hashMap.put(c1, c2);
}else {
return false;
}
}
}
return true;
}
2、用数组来保存映射
因为字符的总数有限而且已知,所以可以直接用数组来保存映射关系
public boolean isIsomorphic1(String s, String t) {
if(s.length() != t.length())
return false;
int[] snum = new int[128];
int[] tnum = new int[128];
char[] sh = s.toCharArray();
char[] th = t.toCharArray();
for (int i = 0;i < sh.length;i++) {
char c1 = sh[i];
char c2 = th[i];
if(snum[c1] != tnum[c2]) { //如果两个映射不一样
return false;
}else {
//建立映射关系
snum[c1] = i+1;
tnum[c2] = i+1;
}
}
return true;
}
上一篇: 幂乘 - 快速幂
推荐阅读