
문제 분석
s의 문자열이 t의 문자열로 대체될 수 있으면 동형이라고 합니다.
각 문자는 문자 수를 유지하면서 교체할 수 있어야 합니다.
예
예 1:
Input: s = "egg", t = "add"
Output: true
g가 d로 대체될 수 있으므로 e > a에 대해 참
예 2:
Input: s = "foo", t = "bar"
Output: false
f > b는 바꿀 수 있지만 o는 두 문자 a와 r로 바꿀 수 없기 때문에 false입니다.
예 3:
Input: s = "paper", t = "title"
Output: true
p > t, a > i, e > l, r > e이므로 참
정답 예
public boolean isIsomorphic(String s, String t) {
Map<Character, Character> map1 = new HashMap<>();
Map<Character, Character> map2 = new HashMap<>();
char() schar = s.toCharArray();
char() tchar = t.toCharArray();
for (int i=0; i < schar.length; i++) {
// 변환될 수 있는 char를 map에 담아
map1.put(schar(i), tchar(i));
map2.put(tchar(i), schar(i));
}
for (int i=0; i < schar.length; i++) {
// 변환시켜서 비교 s > t
Character c1 = map1.get(schar(i));
if (c1 == null || c1.charValue() != tchar(i)) {
return false;
}
// 변환시켜서 비교 t > s
Character c2 = map2.get(tchar(i));
if (c2 == null || c2.charValue() != schar(i)) {
return false;
}
}
return true;
}