题意很好理解,判断两个字符串的结构是否相同。测试数据里有?{}【】等符号啊,果断扩大到300.
public class Solution {
public static boolean isIsomorphic(String s, String t) {
if(isIsomorphicOne(s,t) && isIsomorphicOne(t,s)) {
return true;
}
else {
return false;
}
}
public static boolean isIsomorphicOne(String s, String t) {
if(s==null || t==null) {
return false;
}
Letter[] letter = new Letter[300];
for(int i=0; i<300; i++) {
letter[i] = new Letter((char)(i), -1, 0);
}
for(int i=0; i<s.length(); i++) {
Letter sl = letter[s.charAt(i)];
if(sl.pos==-1) {
sl.count ++;
sl.pos = i;
}
else {
int cur = sl.pos;
if(t.charAt(i)!=t.charAt(cur)) {
return false;
}
else {
sl.count ++;
sl.pos = i;
}
}
}
return true;
}
}
class Letter {
char ch;
int pos;
int count;
public Letter(char ch, int pos, int count) {
this.ch = ch;
this.pos = pos;
this.count = count;
}
}