Algorithms/- LeetCode
LeetCode - 205. Isomorphic Strings [Kotlin]
자굿
2022. 9. 7. 01:23
- 문제 링크 : 205. Isomorphic Strings
Isomorphic Strings - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
정답(Solution)
class Solution {
fun isIsomorphic(s: String, t: String): Boolean {
val sKeyMap = HashMap<Char, Char>()
val tKeyMap = HashMap<Char, Char>()
for(i in s.indices){
val sValue : Char? = sKeyMap[s[i]]
when{
sValue == null && tKeyMap[t[i]] != null -> return false
sValue == null -> {
sKeyMap[s[i]] = t[i]
tKeyMap[t[i]] = s[i]
}
sValue != t[i] -> return false
}
}
return true
}
}
분석
- key value 쌍으로 map에 보관하여 동형(Isomorphic)인지 판별하는 문제
참고할 만한 정답
class Solution {
fun isIsomorphic(s: String, t: String): Boolean {
val map = HashMap<Char, Char>(26)
val rmap = HashMap<Char, Char>(26)
for(i in 0 until s.length) {
val tl: Char? = map[s[i]]
when {
tl == null && rmap[t[i]] != null -> return false
tl == null -> {
map[s[i]] = t[i]
rmap[t[i]] = s[i]
}
tl != t[i] -> return false
}
}
return true
}
}
분석
map.values.contains()를 사용하지 않고 별도의 map으로 관리하여 중복된 t 값이 있는지 t를 key로 하여 바로 찾을 수 있다.
초기 정답(Initial Solution)
class Solution {
fun isIsomorphic(s: String, t: String): Boolean {
val map = HashMap<Char, Char>()
for(i in 0 until s.length){
if(map[s[i]] == null){
if(map.values.contains(t[i])){
return false
}else{
map[s[i]] = t[i]
}
}else{
if(map[s[i]] != t[i]){
return false
}
}
}
return true
}
}
반응형