level - easy
[문제 내용]
주어진 두개의 문자열이 같은 형태로 이루어져 있는지 확인
[example 1]
Input: s = "egg", t = "add"
Output: true
[example 2]
Input: s = "foo", t = "bar"
Output: false
[example 3]
Input: s = "paper", t = "title"
Output: true
[해결 방법]
해당 문자열의 위치마다 index를 정해서
동일한 문자열이 있을 경우 같은 index로 설정하고
아니면 새로운 index를 부여하는 방식으로
위의 문제를 해결했다.
class Solution {
fun isIsomorphic(s: String, t: String): Boolean {
var count = 0
val sMap = HashMap<Char, Int>() // s 문자열 index 저장
val tMap = HashMap<Char, Int>() // t 문자열 index 저장
var sContain = false
var tContain = false
for(i in s.indices) {
if(sMap.containsKey(s[i])) {
sContain = true
}
if(tMap.containsKey(t[i])) {
tContain = true
}
if(sContain && tContain) {
if(sMap[s[i]] != tMap[t[i]]) {
// 해당 문자열이 같은 index를 가지지 않음
return false
}
} else if(!sContain && !tContain) {
// 새로운 index 부여
sMap[s[i]] = count
tMap[t[i]] = count++
} else {
// 해당 문자열은 누군 앞에서 나온 문자열이고 누군 새로운 문자열임
return false
}
}
return true
}
}