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를 반환합니다.