😎풀이

  1. 2개의 Map을 정의한다. (문자열의 중복 빈도가 다르기에 교차 비교해야함)
  2. 각 Map(s To t, t To s)에 교차 등록한다.
  3. 등록된 문자와 비교하는 문자가 일치하지 않을 경우 동형 문자열이 아님을 반환한다.
  4. 모든 순회를 거쳤을 경우 두 문자열은 동행 문자열임을 반환한다.
function isIsomorphic(s: string, t: string): boolean {
    if(s.length !== t.length) return false
    // 2개의 Map 생성
    const mapS = new Map<string, string>()
    const mapT = new Map<string, string>()
    for(let i = 0; i < s.length; i++) {
        const curS = s[i]
        const curT = t[i]
        // 각 자리를 서로 비교하며 다른 결과가 있는 경우 false 반환
        if(!mapS.has(curS)) mapS.set(curS, curT)
        if(!mapT.has(curT)) mapT.set(curT, curS)
        if(mapS.get(curS) !== curT) return false
        if(mapT.get(curT) !== curS) return false
    }

    return true
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글