Isomorphic Strings - LeetCode

 

두 문자열 s, t가 isomorphic 한 지 확인하라.

우선 s와 t의 문자 길이가 다르면 무조건 false이다. 이는 제약조건으로 해결된다.

Isomorphic이기 때문에 각 문자의 대응 문자를 관리해야 한다.

s → t로 하나, t → s로 이렇게 두 개의 변환이 가능해야 하기 때문에 둘을 별도로 관리한다.

만약 해당 문자의 대응 문자가 존재하는 데 다른 대응문자를 넣어야 한다면 false이다.

class Solution {
    public boolean isIsomorphic(String s, String t) {
        Map<Character, Character> sMap = new HashMap<>();
        Map<Character, Character> tMap = new HashMap<>();
        
        for (int i = 0; i < s.length(); i++) {
            char charS = s.charAt(i);
            char charT = t.charAt(i);

            if (sMap.containsKey(charS)) {
                if (sMap.get(charS) != charT) {
                    return false;
                }
            }
            sMap.put(charS, charT);

            if (tMap.containsKey(charT)) {
                if (tMap.get(charT) != charS) {
                    return false;
                }
            }
            tMap.put(charT, charS);
        }

        return true;
    }
}

+ Recent posts