-
LeetCode - 205. Isomorphic Strings [Kotlin]Algorithms/- LeetCode 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 } }
반응형