题目:
205. Isomorphic Strings (Easy)
解题思路:
同构的意思就是s和t要同时满足:
所有出现的字符都必须用另一个字符替换,
同时保留字符的顺序。
两个字符不能映射到同一个字符上,但字符可以映射自己本身。
即:将ABACD
可以替换得到XYXZD
整体思路是记录一个字符上次出现的位置,用字符作为下标,如果两个字符串的字符上次出现的位置一样,那么就属于同构。
代码:1
2
3
4
5
6
7
8
9
10
11
12Java:
public boolean isIsomorphic(String s, String t) {
int[]preIndexOfS = new int[256];
int[]preIndexOfT = new int[256];
for(int i = 0;i < s.length();++i){
char sc = s.charAt(i),tc = t.charAt(i);
if(preIndexOfS[sc] != preIndexOfT[tc]) return false;
preIndexOfS[sc] = i + 1;//注意这里赋值i+1,是因为在开始时不和初始化的0混淆
preIndexOfT[tc] = i + 1;
}
return true;
}