
😎풀이
- 2개의
Map
을 정의한다. (문자열의 중복 빈도가 다르기에 교차 비교해야함)
- 각 Map(
s To t
, t To s
)에 교차 등록한다.
- 등록된 문자와 비교하는 문자가 일치하지 않을 경우 동형 문자열이 아님을 반환한다.
- 모든 순회를 거쳤을 경우 두 문자열은 동행 문자열임을 반환한다.
function isIsomorphic(s: string, t: string): boolean {
if(s.length !== t.length) return false
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]
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
};