LeetCode205-同构字符串

题目链接

英文链接:https://leetcode.com/problems/isomorphic-strings/

中文链接:https://leetcode-cn.com/problems/isomorphic-strings/

题目详述

给定两个字符串 st,判断它们是否是同构的。

如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。

所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。

示例 1:

1
2
输入: s = "egg", t = "add"
输出: true

示例 2:

1
2
输入: s = "foo", t = "bar"
输出: false

示例 3:

1
2
输入: s = "paper", t = "title"
输出: true

说明:
你可以假设 st 具有相同的长度。

题目详解

  • LeetCode290-单词模式 类似,都是同构问题,可以运用两个哈希表进行映射。

  • 映射到当前位置 + 1,保证与不存在的索引 0 不冲突。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class LeetCode_00205 {

public boolean isIsomorphic(String s, String t) {
int[] map1 = new int[128];
int[] map2 = new int[128];
for (int i = 0; i < s.length(); ++i) {
char c1 = s.charAt(i);
char c2 = t.charAt(i);
if (map1[c1] != map2[c2]) {
return false;
}
map1[c1] = i + 1;
map2[c2] = i + 1;
}
return true;
}
}