두 문자열 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;
}
}
'Algorithm > LeetCode' 카테고리의 다른 글
LeetCode 230 - Kth Smallest Element in a BST (0) | 2024.10.21 |
---|---|
LeetCode 11053 - 가장 긴 증가하는 부분 수열 (0) | 2024.10.18 |
LeetCode 71 - Simplify Path (0) | 2024.10.18 |
LeetCode 120 - Triangle (0) | 2024.10.18 |
LeetCode 54 - Spiral Matrix (0) | 2024.10.17 |