☞[다시볼문제] 205. Isomorphic Strings

Matcha Kim·2023년 5월 1일

니트코드75제

목록 보기
10/13
class Solution {
    public boolean isIsomorphic(String s, String t) {
        Map<Character,Character>map= new HashMap<>();
        Map<Character,Character>map2= new HashMap<>();
        //s의 각 문자를 t의 문자로 대응
        
        
        for (int i=0; i<s.length(); i++){
            if(map.containsKey(s.charAt(i))){
                if(map.get(s.charAt(i))!=t.charAt(i)){
                    return false;
 //map에 해당 문자의 대응 관계가 이미 존재하는 경우: 
해당 문자의 대응 관계가 t의 현재 위치의 문자와 같은지 확인합니다.
                }
                
                
                continue;
            }
            
            if (map2.containsKey(t.charAt(i))){
                if (map2.get(t.charAt(i))!=s.charAt(i)){
                    return false;
                }continue;
            }
                map.put(s.charAt(i),t.charAt(i));
                map2.put(t.charAt(i),s.charAt(i));
            
        }return true;
                
        
    }
}


//string 의 길이는 뒤에 S.length()

[With GPT]
위 코드는 두 개의 문자열 s와 t가 주어졌을 때, s의 각 문자가 t의 문자로 일대일 대응되는지 판별하는 문제를 해결하는 자바 프로그램입니다.

isIsomorphic 메소드는 먼저 Map 인터페이스를 구현하는 HashMap 객체 두 개인 map와 map2를 생성합니다. map은 s의 각 문자를 t의 문자로 대응시키는 데 사용되고, map2는 t의 각 문자를 s의 문자로 대응시키는 데 사용됩니다.

그런 다음 for 루프를 사용하여 s 문자열의 각 문자에 대해 다음을 수행합니다:

map에 해당 문자의 대응 관계가 이미 존재하는 경우: 해당 문자의 대응 관계가 t의 현재 위치의 문자와 같은지 확인합니다. 같지 않으면 false를 반환하고, 다음 문자를 처리합니다.
map2에 해당 문자의 대응 관계가 이미 존재하는 경우: 해당 문자의 대응 관계가 s의 현재 위치의 문자와 같은지 확인합니다. 같지 않으면 false를 반환하고, 다음 문자를 처리합니다.
위 두 경우 모두 해당하지 않으면: map과 map2에 새로운 대응 관계를 추가합니다.
위 과정을 마치면, s의 모든 문자에 대한 대응 관계가 확인되었으므로 true를 반환합니다. 만약 s와 t가 길이가 다르거나 s의 각 문자가 t의 문자로 일대일 대응되지 않으면 false를 반환합니다.

profile
전국 말차라떼 다 먹어봄 / 단대 컴공

0개의 댓글