반응형
1. 문제
- 문자열 s와 t가 주어질 때, 순서를 유지하면서 맵핑되어 문자열 s를 t로 만들 수 있는 지 반환하라.
2. 해결
function isIsomorphic(s: string, t: string): boolean {
const sArr = Array.from(s);
const tArr = Array.from(t);
const sMap = new Map<string, string>();
const tMap = new Map<string, string>();
for(let i =0; i<sArr.length;i++){
if(sMap.has(sArr[i]) && sMap.get(sArr[i]) !== tArr[i] ||
tMap.has(tArr[i]) && tMap.get(tArr[i]) !== sArr[i]) {
return false;
}
sMap.set(sArr[i], tArr[i]);
tMap.set(tArr[i], sArr[i]);
}
return true;
};
- 문제 자체를 이해하기 힘들었다.
- 결국, 문자열 s에 각 문자와 동일한 위치에 있는 t의 문자가 1:1로 맵핑되는 지 확인하면 된다.
- s: badc t: baba로 주어질 때,
- b - b
- a - a
- 는 맵핑이 되지만,
- d - b는 이미 앞에서 b-b로 맵핑되어있기 때문에 불가능하다.