[leetcode 75] 205.


문제 분석

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;
}